我正在使用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'
我已经看到了对此问题here和here的引用,但我不确定如何修复它。我是否需要以不同方式构建openssl以在可执行文件中工作?
更新
这就是我构建openssl的方式:
我没有遵循任何外界指示。我只是使用了回购中提供的内容。
答案 0 :(得分:2)
在构建时尝试设置D_FORTIFY_SOURCE=0
。我已经用libcurl解决了这个问题,最后一部分详细介绍http://qiankanglai.me/misc/2014/08/31/android-libcurl/