AndroidスタジオでNDK Cmakeビルドシステムを使用する場合、プラットフォーム\ android-XX \ arch-arm \ usr \ lib * .aライブラリをリンクすることはできますか?静的ライブラリlibm.aまたはlibc.aをNDK cmakeにリンクする
target_link_libraries(hello-jni libm.a android log)
が正常にビルド:(追加libm.aを)修正と次のようにhttps://github.com/googlesamples/android-ndk/blob/master-cmake/hello-jni/app/src/main/cpp/CMakeLists.txt
:私は、変更ファイルを、私はサンプルアプリケーションの変更を試してみました13
LLVMツールチェーンとAndroid NDKを使用しています
0x00000001 (NEEDED) Shared library: [libandroid.so]
0x00000001 (NEEDED) Shared library: [liblog.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
0x00000001 (NEEDED) Shared library: [libc.so]
も追加すると、それが悪化libc.aは、建物が失敗する:しかし、readelfが-dはまだlibm.soリンクされていることが明らかになった
Error:error: relocation overflow in R_ARM_THM_JUMP11
Error:error: linker command failed with exit code 1 (use -v to see invocation)
私は時々、何の説明もせずに最後のエラーが表示されます(ライブラリ名のスペルミスなど)。もっと詳細を見るには-vフラグを設定する必要がありますか?どうやってするの?
あなたのアプリに静的にlibcをリンクすると、痛いだけです。 Zygoteは同じグローバルデータの複製コピーを持ち、2つは矛盾しています。 –
@DanAlbertわかりました。間違いなくライブラリのユーザが共有する、libc.aの内部で使用されているいくつかのグローバルデータについて話していますか? – jozols
スタティックライブラリから必要な部分だけをリンクし、グローバルデータの問題を回避することは可能でしょうか?私は静的リンクリンカのインポートだけで必要なものと思う。 – jozols