libssl和libcrypto的未定义引用错误

时间:2014-06-04 21:31:36

标签: android openssl libssl libcrypto fortify-source

我正在使用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'

我已经看到了对此问题herehere的引用,但我不确定如何修复它。我是否需要以不同方式构建openssl以在可执行文件中工作?

更新

这就是我构建openssl的方式:

我没有遵循任何外界指示。我只是使用了回购中提供的内容。

1 个答案:

答案 0 :(得分:2)

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