我正在使用 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 init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1.2
- 回购同步
- 源构建/envsetup.sh
- 午餐full_flo-eng
- cd 进入 openssl 目录
- 毫米-B
我没有听从任何外界的指示。我只是使用了 repo 中提供的内容。