在Windows ndk中使用Boost

我正在尝试在Windows中使用Eclipse中的Android ndk boost库。 我试图按照这个教程

我被卡在cygwin中“bjam”命令的步骤。

bjam –without-python –without-serialization toolset = gcc-android4.4.3 link = static runtime-link = static target-os = linux –stagedir = android

错误:未findbjam命令。

什么是BJAM? 我也沿着ndk r8e使用了boost 1.53。 有人可以帮我吗?

Solutions Collecting From Web of "在Windows ndk中使用Boost"

Android NDK不再依赖于Cygwin,因此您可以在Windows命令提示符( cmd )内使用NDK构buildBoost。

为了使Boost.BuildfindNDK,编辑boost\tools\build\v2\user-config.jam文件并附加以下文本:

 import os ; androidNDKRoot = C:/android-ndk-r8e ; # put the relevant path using gcc : android : $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.7/prebuilt/windows/bin/arm-linux-androideabi-g++ : <compileflags>--sysroot=$(androidNDKRoot)/platforms/android-9/arch-arm <compileflags>-mthumb <compileflags>-Os <compileflags>-fno-strict-aliasing <compileflags>-O2 <compileflags>-DNDEBUG <compileflags>-g <compileflags>-lstdc++ <compileflags>-I$(androidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.7/include <compileflags>-I$(androidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/include <compileflags>-D__GLIBC__ <compileflags>-D_GLIBCXX__PTHREADS <compileflags>-D__arm__ <compileflags>-D_REENTRANT <archiver>$(androidNDKRoot)/toolchains/arm-linux-androideabi-4.7/prebuilt/windows/bin/arm-linux-androideabi-ar <ranlib>$(androidNDKRoot)/toolchains/arm-linux-androideabi-4.7/prebuilt/windows/bin/arm-linux-androideabi-ranlib ; 

当然,而不是c:/android-ndk-r8e你必须在你的电脑上放置NDK的正确位置。

此外,您可以select更新的平台API,而不是android-9

还要注意NDK提供了几个工具链,上面的设置指向gcc-4.7。 如果您更喜欢使用其他工具链构buildboost, arm-linux-androideabi-4.7更改为相关path。

将configuration放入user-config.jam之后,打开cmdcd到Boost所在的目录,然后调用bootstrap 。 然后像这样调用b2 (例如):

b2 --without-python --without-serialization threading=multi link=static runtime-link=static toolset=gcc-android target-os=linux threadapi=pthread --stagedir=android stage

更新 :截至2015年11月,较旧的NDK工具链似乎与较新的Boost版本有关,导致编译器崩溃,因此请考虑使用更新的编译器。 要做到这一点,只需将上述脚本中每出现4.7次就更改为4.9次。 另外,值得用最近的Android API编译(例如.andoroid-9 – > andoroid-16左右)。