如何在安卓下指定 STL 库
How to specify STL library under Android?
本文关键字:STL 更新时间:2023-10-16
我们发现了一个试图使用Autotools将我们的项目移植到Android的报告。我们的项目是一个使用 STL 的C++库,Android 让开发者选择一个C++和 STL 库。该项目是基于生成文件的,不使用自动工具。相反,它发布了针对Android的交叉编译程序。
报告的重点是标题检查失败。我们认为它失败了,因为Autotools在执行检查时没有使用STL库。STL 库与 --sysroot
略有不同。Sysroot 将包含许多标头和库,但不包括 STL 标头或库,因为用户应该选择一个。
我想知道如何告诉Autotools在为目标配置时使用Android上的特定STL库。
答案是同时使用独立的工具链和自动工具。例如,对于通用的 arm abi,也使用 c++ stl(gnu 是默认的):
1) 首先使用您需要的任何 --stl 选项创建您的独立工具链。
$> ${ANDROID_NDK_ROOT}/build/tools/make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.9 --stl=libc++ --platform=android-21 --install-dir=${PWD}/tools/ --force
2) 将工具链放在您的路径中,以便配置可以找到工具
export PATH=${PWD}/tools/bin:${PATH}
2a) $TRIPLE env var 有助于配置以检查名为
${TRIPLE}-cc
${TRIPLE}-ld
你会发现上面bin目录中的工具以"arm-linux-androideabi"为前缀。所以设置三重。在此示例中,它是
export TRIPLE=arm-linux-androideabi
2b) 如果您不想设置$TRIPLE,则必须将 CC、CXX 和 CPP env var 设置为指向新工具链 bin dir 中的版本,或者传递它们进行配置(我不知道如何配置)。
3)最后运行Autotools并告诉它使用独立的工具链作为它的sysroot
$>./configure --with-sysroot=${PWD}/tools/sysroot --host=${TRIPLE} ...
相关文章:
- 没有找到相关文章