3

NDKアプリ内にOpensslをビルドしようとしています。Android ndkビルドで必要なすべての手順を実行した後でも、リンクエラーが常に発生します。ndkがサポートされているライブラリでndk-buildコマンドを使用しています。libcryptoを見ることができたので、biengは正常にコンパイルおよびリンクされました

Compile thumb  : crypto <= sha512-armv4.S
SharedLibrary  : libcrypto.so
Install        : libcrypto.so => /Users/<me>/Downloads/paddybyers-openssl-android-2b40b8b/libs/armeabi/libcrypto.so

しかし、これ以降に開始するopensslは、何らかの理由で失敗します。コマンドラインだけでなく、Eclipseでのビルドも含め、あらゆる方法を試しました。スタンドアロンプ​​ロジェクトとして、opensslを個別にビルドすることも試みました。しかし、それは常に同じレベルで停止します。

  • 私の構成:

mac OS x NDK r8Opensslソースの使用:https ://github.com/eighthave/openssl-android.git (guardproject https://github.com/guardianproject/openssl-android.gitでビルドしてみました)

libcryptoの作成後に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**** }

誰かがこれについて私を助けてくれたら本当にありがたいですか?

4

5 に答える 5

4

私は同じ問題に遭遇し、OpenSSL1.0.1cForAndroid/crypto/Android.mk を変更して修正し、エクスポート リストに libzib を追加しました。

crypto/Android.mk
LOCAL_EXPORT_LDLIBS := -lz 

Crypto/Android.mk には "LOCAL_LDLIBS += -lz" があるため、libcrypto をビルドするときに正常にリンクされますが、ssl でリンクするときにそれを伝播するのに十分ではないようです (?)。

私はndk r8b、gcc 4.6を使用しています

于 2012-09-21T00:47:02.260 に答える
2

OpenSSL1.0.1cForAndroid\jni\Application.mkに次の行を追加してみてください

NDK_TOOLCHAIN_VERSION=4.4.3

これを行うことで同じ問題を修正しました。

于 2012-09-25T07:24:07.907 に答える
0

リンク関連の問題がある可能性が高いので、この質問への回答を読んでみてください

ndkアプリケーションでライブラリをリンクする方法

于 2012-08-08T02:07:36.730 に答える