使用NDK編譯.so庫的好處在於,不需要寫復雜的makefile,不需要配復雜的平台相關參數(我之前的錯誤可能是出在makefile中的一些平台相關參數沒配好),因為google已經幫我們做好了。
我在這里給大家分享一下使用NDK編譯將靜態庫.a和.c/.cpp編譯成x86/.so動態庫的方法:
編譯環境:SshClient+編譯服務器,使用mount命令將本地項目mount到編譯服務器。
- 在eclipse工程目錄下建立一個jni的文件夾。
- 在jni文件夾中建立Android.mk和Application.mk文件。
Android.mk文件:
Android提供的一種makefile文件,用來指定諸如編譯生成so庫名、引用的頭文件目錄、需要編譯的.c/.cpp文件和.a靜態庫文件等。詳見附件中的Android.mk。
Application.mk文件:
定義了項目的一些細節,比如APP_ABI := x86(編譯X86平台庫)、APP_PLATFORM := android-9(使用android-9以上的平台庫)。
- 用cd命令移至jni目錄,運行/mnt/500G/public/NDK/android-ndk-r7b/ndk-build命令,這時命令行中可能會出現編譯錯誤,比如頭文件找不到,函數找不到等等,細心找找就能改掉。
- 編譯成功后,在工程目錄下libs/x86中就會生成你想要的.so庫。