ubuntu16.04编译boost for Android

下载boost源码

在官网下载指定版本的源码
http://www.boost.org/users/history/

编译boost源码

1.进入源码目录执行./bootstrap.sh生成编译工具

2.编辑project-config.jam文件,替换如下内容

# define platform name of ndk
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 ;
}
# replace with your own path
ANDROID_NDK = "/home/gavinandre/Android/Sdk/ndk-bundle" ;
# compile with gcc, you can change compiler to clang or others
using gcc : android4.9 : $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :
$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar
$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib
-I$(ANDROID_NDK)/platforms/android-19/arch-arm/usr/include
-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/include
-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/include/backward
-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include
-fexceptions
-frtti
-fpic
-ffunction-sections
-funwind-tables
-D__ARM_ARCH_5__
-D__ARM_ARCH_5T__
-D__ARM_ARCH_5E__
-D__ARM_ARCH_5TE__
-D__ARM_ARCH_7__
-D__ARM_ARCH_7A__
-Wno-psabi
-march=armv7-a
-mtune=xscale
-mfloat-abi=softfp
-marm
-mthumb
-Os
-std=gnu++11
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-Wa,–noexecstack
-DANDROID
-D__ANDROID__
-D__ARM_EABI__
-DNDEBUG
-O2
-g
;
# project default compiler
project : default-build gcc-android4.9 ;
# replace with libraries you wanna to build
libraries = –with-container –with-coroutine –with-coroutine2 –with-fiber –with-graph –with-graph_parallel –with-log –with-metaparse –with-python –with-test –with-type_erasure –with-atomic –with-date_time –with-program_options –with-chrono –with-context –with-iostreams –with-locale –with-mpi –with-serialization –with-signals –with-timer –with-wave –with-math –with-random –with-exception –with-filesystem –with-thread –with-system –with-regex –with-program_options ;

3.执行如下命令

./b2 toolset=gcc-android4.9 link=static threading=multi target-os=linux –stagedir=android_build

toolset表示指定编译工具,link表示编译成静态库,threading表示使用多线程编译,–stagedir表示指定编译文件生成目录名

4.之后等待编译完成即可

编译完成后可以在android_build目录下找到编译完的库文件
boost库在:android_build/lib下

参考:https://github.com/teamarkstudio/boost_for_android