實(shí)際開發(fā)過程中团赏,遇到編譯android庫時(shí),用到的第三方靜態(tài)庫不是android平臺的耐薯,因此需要自己編譯靜態(tài)庫使用舔清。下載第三庫的源碼,然后解壓曲初。我編譯的是libtool的源碼体谒,該源碼有相應(yīng)的makefile文件。我實(shí)際需要編譯arm和x86兩個(gè)平臺的靜態(tài)庫臼婆。我使用的是android開發(fā)下載的sdk中有ndk-bundle里面的gcc編譯器抒痒。
Arm平臺編譯
在終端上首先運(yùn)行下面的腳本,配置使用編譯arm的gcc編譯器
export NDKROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle"
export SYSROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle/platforms/android-19/arch-arm"
export PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
export CC="$PREBUILT/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"
export CXX="$PREBUILT/bin/arm-linux-androideabi-g++ --sysroot=$SYSROOT -lh:/Users/zhangyang/android-sdk-macosx/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include"
export AR="$PREBUILT/bin/arm-linux-androideabi-ar --sysroot=$SYSROOT"
export RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlib
export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
然后執(zhí)行下面的命令颁褂,其中--prefix指的是編譯后的庫存放的目錄故响,--host指的是編譯平臺
./configure --prefix=/Users/libtool_arm --host=arm-linux-androideabi
最后執(zhí)行
make & make install
完成后就會在相應(yīng)的目錄下(/Users/libtool_arm)生成靜態(tài)庫傀广。
x86平臺編譯,與arm平臺類似彩届,執(zhí)行以下三條命令:
export NDKROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle"
export SYSROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle/platforms/android-19/arch-x86"
export PREBUILT=$NDKROOT/toolchains/x86-4.9/prebuilt/darwin-x86_64
export CC="$PREBUILT/bin/i686-linux-android-gcc --sysroot=$SYSROOT"
export CXX="$PREBUILT/bin/i686-linux-android-g++ --sysroot=$SYSROOT -lh:/Users/zhangyang/android-sdk-macosx/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include"
export AR="$PREBUILT/bin/i686-linux-android-ar"
export RANLIB=$PREBUILT/bin/i686-linux-android-ranlib
export STRIP=$PREBUILT/bin/i686-linux-android-strip
./configure --prefix=/Users/libtool_386 --host=i386-linux-android
make & make install