公司的项目需要用到boost,在此做个记录,避免下次浪费时间。
首先需要下载好 Android NDK,和 boost 1.51.0,然后配置好NDK的环境变量,这些就不细说了
然后启动命令行,进入boost目录,执行如下命令,生成b2
./bootstrap.sh
打开/tools/build/v2/user-config.jam
文件,在文件最后追加如下内容
import os ;
if [ os.name ] = CYGWIN || [ os.name ] = NT {
androidPlatform = windows-x86_64 ;
}
else if [ os.name ] = LINUX {
androidPlatform = linux-x86_64 ;
}
else if [ os.name ] = MACOSX {
androidPlatform = darwin-x86 ;
}
modules.poke : NO_BZIP2 : 1 ;
#ANDROID_NDK = ../.. ;
ANDROID_NDK = D:/Android/android-ndk-r10c ;
using gcc : android4.8 : $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :
<archiver>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar
<ranlib>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib
<compileflags>--sysroot=$(ANDROID_NDK)/platforms/android-9/arch-arm
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.8/include
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include
#<compileflags>-DBOOST_NO_STD_WSTRING
<compileflags>-DNDEBUG
<compileflags>-D__GLIBC__
<compileflags>-DBOOST_FILESYSTEM_VERSION=3
<compileflags>-lstdc++
<compileflags>-lgnustl_shared
<compileflags>-mthumb
<compileflags>-fno-strict-aliasing
<compileflags>-std=gnu++11
<compileflags>-O2
;
- 注意要在环境变量中配置好
ANDROID_NDK
的路径
执行如下命令开始编译boost::serialization
,静态库最后生成在android/lib
目录下
./b2 --with-system --with-serialization toolset=gcc-android4.8 link=static runtime-link=static target-os=linux --stagedir=android
最后在自己的Android.mk
文件中引入静态库就行了
还有另外一种编译的方法,参考链接:http://www.cnblogs.com/swordy/p/3991243.html,准备下次尝试