私は実行可能ファイルを作成する際に複数のライブラリをリンクするプログラムを持っています。スタンドアローンのツールチェーンを使用してこれらのライブラリをすべてビルドし、スタンドアロンのツールチェーンを使用して、アンドロイドデバイスで動作する実行可能ファイルを作成できます。ですから、私が構築したライブラリは機能的なようです。今、私はそれらのライブラリをアプリに組み込もうとしています。だから、私のandroid.mkに、私はこのようなものがあります:Android NDKで事前ビルドされたライブラリを使用する際に問題を構築します
LOCAL_PATH := $(call my-dir)
ROOT_PATH := $(LOCAL_PATH)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_PATH = $(ROOT_PATH)
LOCAL_MODULE := test-libs
LOCAL_STATIC_LIBRARIES := staticA
LOCAL_SHARED_LIBRARIES := sharedA sharedB sharedC sharedD
LOCAL_SRC_FILES := test-libs.c
include $(BUILD_SHARED_LIBRARY)
ライブラリのそれぞれについての、私はそれから日食に(私のプロジェクトをビルドすると、この
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sharedA
LOCAL_SRC_FILES := sharedA.so
include $(PREBUILT_SHARED_LIBRARY)
ようAndroid.mkを持っています)、私はこれを取得:間違って何が起こっているかの
C:/ndk/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a(unwind-arm.o): In function `__gnu_unwind_pr_common':
/cygdrive/c/ndk/android-ndk-r7b/build/core/build-binary.mk:314: recipe for target `obj/local/armeabi/libtest-libs.so' failed
/tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/libgcc/../gcc/config/arm/unwind-arm.c:1237: undefined reference to `__cxa_call_unexpected'
任意の考え?
また、静的ライブラリと共有ライブラリのいずれかには何の依存関係もなく、それらのみを含めるとすべてがクールです。私の共有ライブラリの1つは静的ライブラリに依存していました。それらを含めるだけで他の共有ライブラリに依存する他のものを含めると、この問題が発生します。
更新1:これは、私のApplication.mkのAPP_STL設定が無視されているためです。私がApplication.mkに持っているものは次のとおりです: APP_STL:= gnustl_shared libgnustl_shared.soをコピーして別のビルド済み共有ライブラリのように扱うと、私の問題は解消されました。 APP_STLが正しく動作しない理由注:私は何かをねじっている可能性があります。私は7bを使用するようにアップグレードしました。 gnustl_sharedを使って私のために他のアプリと一緒に働いていました。 7にロールバックしても問題は解決しません。私はEclipseで何かを混乱させたと思う。私は、SequoyahでEclipse(ウィンドウズ)を使用しています。
私はこれを私のApplication.mk APP_STL:= gnustl_sharedに追加しました.LOCAL_LDLIBSに-lgnustl_sharedを追加すると見つかりませんでした。実際、libsディレクトリを見ると、gnustl_sharedはそこにコピーされませんでした。これは、NDK 7b Windowsインストールを使用しています。なぜそれを引っ張っていないのだろうか? NDK 7に問題がありました。おそらくまだ存在しています。 – corbin
libgnustl_shared.soを手作業でやや手作業でコピーして、別のビルド済みのものと同じように扱うことで、すべてが問題なく、私のオリジナルの問題が修正されています。なぜAPP_STL設定を追加するのが私のためにこれをしなかったのかのアイデア。過去の経験から、「必要がある」と言われています。 – corbin
私はあなたに同意する、それは本当に持っている必要があり、私はなぜそれがしないか分からない。それはNDKのバグのように感じます。これのような奇妙なことは、どこでもすべての図書館にリンクさせてくれました。P – Jake