私はarmeabi-v7aのNDK(r11b)を使ってAndroid用のライブラリを構築していますが、異なるバージョンのlibgnustl_shared.so
が見つかりました。理由を理解できません。 NDKフォルダでlibgnustl_shared.soはどこから来たのですか?私はビルドした後にサイズが違うのはなぜですか?
- (アンドロイド - NDK-R11B \源で\ CXX-のSTL \ GNU-のlibstdC++ \ 4.9 \ libsに\ armeabi-v7a \ libgnustl_shared.so)そのサイズが5593koです。
- ndk-build.cmdを使用してプロジェクト(ライブラリの束)をビルドした後、ライブラリ(libs \ armeabi-v7a \ libgnustl_shared.so)のファイルサイズは694koです。
- QtCreatorを使用してプロジェクト(ライブラリの束)をビルドした後、ライブラリは(android-build \ libs \ armeabi-v7a \ libgnustl_shared.soの)ファイルサイズは846koです。 apkにパッケージされたライブラリ(android-build \ bin)は同じサイズを持っていることに注意してください。それは(アンドロイド - NDK-R11B /ソース/ CXX-STL/GNU-のlibstdC++/4.9/libsに/ armeabi-v7a/libgnustl_shared.so)からファイルを拾っもそのQtCreatorビルドログレポート注意
メイン質問:コンパイル後のファイルが元のファイルよりも小さいのはなぜですか?リンカ/コンパイラは、ある時点でファイルを縮小しますか(未使用のシンボルを削除しますか?)
ボーナス質問:私は最終的に(846koのlibgnustl_shared.soで終わる)QtCreatorと私のプロジェクトをビルドし、彼自身でそれを統合する他の誰かに私のように、ファイル(しかしlibgnustl_shared.so)を得ました応用。彼がアプリケーションを配備した後、彼のIDE(私が信じるAndroidスタジオ)は694koのlibgnustl_shared.soでそれをデプロイし、私のコードはSTL操作でクラッシュし始めます。これらのクラッシュは、libgnustl_shared.soとの不一致が原因である可能性がありますか?私たちはそれをどのように修正すべきですか? (QtCreatorは私にlibgnustl_shared.soの静的バージョンでビルドさせてはいけません。どのバージョンを展開の最後に使用するのですか?)
私のプロジェクトはQtCreatorでコンパイルされますが、Qtは使用しません私のライブラリをGUIからテストしますが、ライブラリ自体はQtをまったく使用しません)。
あなたの助けを頼りにしてください。あなたは、もし彼らが両方ともr11であり、両方ともarmeabi-v7aならば互換性があるはずですが、私たちが694koに剥ぎ取ったものを使用すれば、QtCreatorは846koに剥奪されたものをパッケージ化しました....おそらく694ko私のコードで必要ないくつかのシンボル....いいえ?そうすれば、互換性がなくなります... \ android-ndk-r11b/sources/cxx-stl/gnu-libstdC++/4.9/libs/armeabi-v7a/l ibgnustl_shared.soは取り除かれていません)、すべてのシンボルが存在することを確認しますか? – jpo38