boost1_57_0在ios7.1上的交叉编译

来源:互联网 发布:js模拟点击是什么意思 编辑:程序博客网 时间:2024/06/08 08:18

boost库中一些功能需要编译才能使用,因此,根据boost官网上的指示,进行了编译,谁知道官网上面直接给的编译方法是主机编译,也就是说编译出来的库只能在本机,也就是OS_X中使用,architecture不对,在IOS环境中不能使用。经过一番寻找,终于让我找到了解决办法,那就是使用交叉编译,在OS_X中编译出针对IOS平台的库。

1 在用户目录下面生成user-config.jam,然后往里面写入如下内容:

using darwin : 7.1~iphonesim: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -DBOOST_SP_USE_PTHREADS -DBOOST_THREAD_DONT_USE_ATOMIC -std=c++11 -stdlib=libc++: <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer: <architecture>x86 <target-os>iphone;using darwin : 7.1~iphone: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -arch armv7s -arch arm64 -DBOOST_SP_USE_PTHREADS -std=c++11 -stdlib=libc++: <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer: <architecture>arm <target-os>iphone;

2 进入boost_1_57_0目录下面,运行bootstrap.sh

jiangs-iMac:boost_1_57_0 jiang$ ./bootstrap.sh

3 添加环境变量SDK_VERSION,在terminal中输入 export SDK_VERSION="7.1"

export SDK_VERSION="7.1"
编译iOS模拟器release版,--prefix参数指定编译路径,可以依情况修改

./bjam --prefix=${HOME} toolset=darwin variant=release architecture=x86 target-os=iphone macosx-version=iphonesim-${SDK_VERSION} link=static install
编译iOS真机release版,--prefix参数指定编译路径,可以依情况修改

./bjam --prefix=${HOME} toolset=darwin variant=release architecture=arm target-os=iphone macosx-version=iphone-${SDK_VERSION} define=_LITTLE_ENDIAN link=static install

0 0