实际开发过程中,遇到编译android库时,用到的第三方静态库不是android平台的,因此需要自己编译静态库使用。下载第三库的源码,然后解压。我编译的是libtool的源码,该源码有相应的makefile文件。我实际需要编译arm和x86两个平台的静态库。我使用的是android开发下载的sdk中有ndk-bundle里面的gcc编译器。
Arm平台编译
在终端上首先运行下面的脚本,配置使用编译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
然后执行下面的命令,其中--prefix指的是编译后的库存放的目录,--host指的是编译平台
./configure --prefix=/Users/libtool_arm --host=arm-linux-androideabi
最后执行
make & make install
完成后就会在相应的目录下(/Users/libtool_arm)生成静态库。
x86平台编译,与arm平台类似,执行以下三条命令:
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