1

我正在使用 android-4.4_r1 (KRT16S) 构建 Android 平台。我可以毫无问题地将源代码(这是一个大项目)编译成 *.so 文件。

如果我尝试将源代码构建为命令行可执行文件include $(BUILD_EXECUTABLE)(基本上只是用命令行界面包装库),我在链接时遇到以下错误:

out/target/product/flo/obj/lib/libssl.so: error: undefined reference to '__strlen_chk'
out/target/product/flo/obj/lib/libssl.so: error: undefined reference to '__strchr_chk'
out/target/product/flo/obj/lib/libcrypto.so: error: undefined reference to '__strrchr_chk'
out/target/product/flo/obj/lib/libcrypto.so: error: undefined reference to '__sprintf_chk'
out/target/product/flo/obj/lib/libcrypto.so: error: undefined reference to '__strcat_chk'

我在这里这里看到过对这个问题的引用,但我不知道如何解决它。我是否需要以不同的方式构建 openssl 才能在可执行文件中工作?

更新

这就是我构建 openssl 的方式:

我没有听从任何外界的指示。我只是使用了 repo 中提供的内容。

4

1 回答 1

2

构建时尝试设置D_FORTIFY_SOURCE=0。我已经用 libcurl 解决了这个问题,这里有最后一部分的详细信息http://qiankanglai.me/misc/2014/08/31/android-libcurl/

于 2014-09-07T14:57:11.147 回答