如何编译和使用Boost for the Android NDK?我已经尝试了我在网上找到的所有东西,从Boost for Android到自己用bjam文件编译它。然而,我并没有成功。当我尝试用bjam编译它时,我得到了以下错误:
error: toolset gcc initialization:
error: version 'androidR10e' requested but 'g++-androidR10e' not found and version '4.2.1' of default 'g++' does not match
error: initialized from /path/to/android-ndk-r10e/sources/boost/tools/build/v2/user-config.jam:86
有没有人成功地将Boost与Android NDK R10e一起使用?
当我可以编译它时,我应该如何在我的Android应用程序项目中使用它?
发布于 2015-05-28 15:17:42
我们设法为NDKr10d编译了它。对于NDKr10e,它应该是相同的。project-config.bjam应该指向NDK中的gcc编译器。我们的看起来是这样的:
import option ;
using gcc : arm : D:\\android\\ndk\\toolchains\\arm-linux-androideabi-4.9\\prebuilt\\windows-x86_64\\bin\\arm-linux-androideabi-g++.exe ;
option.set keep-going : false ;
然后只需用b2编译,告诉安卓的路径包括:
b2 --reconfigure <your options>
toolset=gcc-arm
include=<ndk folder>\sources\cxx-stl\gnu-libstdc++\4.9\include
include=<ndk folder>\sources\cxx-stl\gnu-libstdc++\4.9\libs\<target platform>\include
include=<ndk folder>\platforms\<android api version>\arch-arm\usr\include
install --libdir=stage\lib\<target platform>
我们即将转移到ndkr10e。你能告诉我boost是否还能用吗?:)
发布于 2015-05-28 04:17:14
最简单的方法是使用CrystaX NDK,它包含已经构建的、随时可用的Boost库。下面是如何在CrystaX NDK中使用Boost的示例:1、2
发布于 2016-03-11 01:10:36
按照boost的指导,我能够在Ubuntu12.04上用NDKr10e构建Boost1.60(尽管我怀疑这很少依赖于主机系统)。以下是我的笔记:
获取并解压缩boost源代码tarball (我使用的是1.60):boost_1_60_0.tar.bz2
moskewcz@maaya:/scratch/moskewcz/android/src$ ll
total 74M
drwx------ 10 moskewcz moskewcz 4.0K Mar 9 14:14 boost_1_60_0
-rw-rw-r-- 1 moskewcz moskewcz 74M Jan 5 11:15 boost_1_60_0.tar.bz2
按照在unix上入门“构建自定义二进制文件”部分中的boost说明进行操作
使用全新的空根目录安装b2,即/scratch/ boost -build- root;使用usr作为前缀;再次遵循boost说明:
moskewcz@maaya:/scratch/moskewcz/android/src/boost_1_60_0/tools/build$ ./bootstrap.sh
moskewcz@maaya:/scratch/moskewcz/android/src/boost_1_60_0/tools/build$ ./b2 install --prefix=/scratch/moskewcz/android/boost-build-root/usr
将b2放入path (同样按照说明)
export PATH=/scratch/moskewcz/android/boost-build-root/usr/bin:$PATH
在某些jam文件中(我没有~/user-config.jam,所以我创建了一个并使用它,也许有更好的选择来创建/编辑jam文件)添加一些jam-code (?)定义一个从独立工具链指向g++的gcc版本(工具集)。请注意,这是一个使用NDK以正常方式创建的工具链,遵循其“创建独立工具链”的说明。我不是指向NDK本身的g++ (我不知道这可能会工作,也可能不会工作):
import option ;
using gcc : arm_linux_android_4.9 : /scratch/android-stc/bin/aarch64-linux-android-g++ ;
option.set keep-going : false ;
转到boost项目根目录并构建,主要是按照说明。--build-dir可能是可选的?我还添加了-j8来||生成
moskewcz@maaya:/scratch/moskewcz/android/src/boost_1_60_0$ b2 -j8 --build-dir=bin.v2 toolset=gcc-arm_linux_android_4.9 stage
注意,这试图在默认情况下构建静态库和共享库,但是构建共享库失败了,因为安卓没有librt.so --根据我的研究,人们声称在安卓下(一些?)librt.so的功能是在libc.so内部的--所以为了构建安卓共享库,简单地从链接步骤中删除-lrt可能是可以的。我并没有尝试这样做。请参见:
https://stackoverflow.com/questions/30491158
复制相似问题