我试图在我的NDK应用程序中构建Openssl。即使在遵循Android构建所期望的所有必要步骤之后,我也会不断地得到链接错误。我使用ndk支持的库使用ndk-build命令。我可以看到libcrypto.So成功地编译和链接。
Compile thumb : crypto <= sha512-armv4.S
SharedLibrary : libcrypto.so
Install : libcrypto.so => /Users/<me>/Downloads/paddybyers-openssl-android-2b40b8b/libs/armeabi/libcrypto.so但是 openssl 由于某种原因而开始失败,.I尝试了所有可能的方法,包括构建eclipse以及命令行,我甚至尝试单独构建openssl作为独立项目。但它总是停留在同一个层次上。
使用mac r8 Openssl来源于:https://github.com/eighthave/openssl-android.git (我尝试在https://github.com/guardianproject/openssl-android.git上构建)
它在创建libcrypto.So后开始编译openssl之前抛出一个错误。
****Compile thumb : ssl <= ssl_algs.c
Compile thumb : ssl <= bio_ssl.c
Compile thumb : ssl <= ssl_err.c
Compile thumb : ssl <= kssl.c
SharedLibrary : libssl.so
Executable : openssl
/Users/me/Documents/android/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: warning: libz.so, needed by ./obj/local/armeabi/libcrypto.so, not found (try using -rpath or -rpath-link)
./obj/local/armeabi/libcrypto.so: undefined reference to `zError'
./obj/local/armeabi/libcrypto.so: undefined reference to `inflateEnd'
./obj/local/armeabi/libcrypto.so: undefined reference to `deflate'
./obj/local/armeabi/libcrypto.so: undefined reference to `deflateInit_'
./obj/local/armeabi/libcrypto.so: undefined reference to `inflate'
./obj/local/armeabi/libcrypto.so: undefined reference to `deflateEnd'
./obj/local/armeabi/libcrypto.so: undefined reference to `inflateInit_'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/openssl] Error 1**** }如果有人能帮我解决这件事我会很感激的?
发布于 2012-09-21 00:47:02
我遇到了同样的问题,并修改了OpenSSL1.0.1cForAndroid/crypto/Android.mk,将libzib添加到导出列表中:
crypto/Android.mk
LOCAL_EXPORT_LDLIBS := -lz in中确实有"LOCAL_LDLIBS += -lz“,所以它在构建libcrypto时成功地将其链接起来,但是很明显,在ssl (?)中进行链接还不够。
我用ndk r8b,gcc 4.6
发布于 2012-09-25 07:24:07
尝试在OpenSSL1.0.1cForAndroid\jni\Application.mk中添加以下行
NDK_TOOLCHAIN_VERSION=4.4.3我只是通过这样做解决了同样的问题。
发布于 2012-08-08 02:07:36
很可能你有一个链接相关的问题,试着阅读这个问题的答案。
https://stackoverflow.com/questions/11856688
复制相似问题