gpt4 book ai didi

android - Android下如何指定STL库?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:42 27 4
gpt4 key购买 nike

我们caught a report有人试图使用 Autotools 将我们的项目移植到 Android。我们的项目是一个使用STL的C++库,Android让开发者选择一个C++和STL库。该项目基于 makefile,不使用 Autotools。相反,它有 published procedures for cross-compiling for Android .

the report的推力是 header 检查失败。我们认为它失败了,因为 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 有助于配置以检查名为 like 的工具

${TRIPLE}-cc
${TRIPLE}-ld

您会发现上面 bin 目录中的工具以“arm-linux-androideabi”为前缀。所以设置三倍。在这个例子中是

export TRIPLE=arm-linux-androideabi

2b) 如果您不想设置 $TRIPLE,则必须将 CC、CXX 和 CPP 环境变量设置为指向新工具链 bin 目录中的版本,或者将它们传递给配置(我不知道怎么做)。

3) 最后运行 autotools 并告诉它为它的 sysroot 使用独立的工具链

$>./configure --with-sysroot=${PWD}/tools/sysroot --host=${TRIPLE} ...

关于android - Android下如何指定STL库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com