【问题标题】:Android Building Toolchain can't find/missing STL header directoryAndroid Building Toolchain 找不到/缺少 STL 头目录
【发布时间】:2012-07-11 17:12:43
【问题描述】:

我已经手动构建了 Android NDK 工具链。一切正常,除了当我使用编译器时它找不到基本的 STL 东西,比如 .所以它不能编译包含 STL 的代码,因为它默认不知道去哪里寻找头文件。在使用自定义或预构建的工具链之前,我从未遇到过这个问题。但是,如果我手动添加包含目录,例如

 -I$(NDK_TOOLCHAIN)/arm-linux-androideabi/include/c++/4.6/

然后它工作得很好。手动添加每个重要的目录是一件痛苦的事(不止这个)。过程中肯定有问题。

这些是我构建它所遵循的步骤:

 sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl

 Download NDK

 Untar NDK to [SOME_LOCATION], using /opt/ndk/

 Set NDK_ROOT=/opt/ndk/

  ./build/tools/download-toolchain-sources.sh src/

 Download MPC 0.9

 Move mpc tar to ./src/mpc/

 ./build/tools/build-gcc.sh --gmp-version=4.3.2 --mpc-version=0.9 --mpfr-version=2.4.2 --binutils-version=2.21 $(pwd)/src $(pwd) arm-linux-androideabi-4.6

 ./build/tools/build-gcc.sh --gmp-version=4.3.2 --mpc-version=0.9 --mpfr-version=2.4.2 --binutils-version=2.21 $(pwd)/src $(pwd) x86-4.6

 ./build/tools/build-gcc.sh --gmp-version=4.3.2 --mpc-version=0.9 --mpfr-version=2.4.2 --binutils-version=2.21 $(pwd)/src $(pwd) mipsel-linux-android-4.6

所有 STL 文件都存在于正确的位置。如果我在使用这些自定义构建的工具链作为参考之后构建独立工具链,则每个版本的所有头文件和编译库。

== 更新

强制 gcc 吐出它的包含搜索路径:

  echo "#include <bogus.h> int main(){}" > t.c; /opt/android-9_arm/bin/arm-linux-androideabi-gcc -v t.c; rm t.c

这包含包含下的搜索路径:

 /opt/android-9_arm/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/include

在那个位置确实是下面的./cxx/4.6/STL_HEADERS

将输出与来自 google 的 NDK 构建进行比较确实存在严重差异。现在真正的问题是如何保证我的自定义 GCC 构建指向适当的 G++ STL 标头位置。

【问题讨论】:

  • Halsafar's blog post FWIW,您最好将署名和信用归功于在您的博客上发布的外部回答您的问题的人!
  • 当然。我什至会在此处返回链接。反正我还在挖掘,很可能会是我来回答。

标签: android c++ compiler-construction toolchain android-ndk


【解决方案1】:

原来是 make-standalone-toolchain.sh 中的一个错误。解决方法是:

mv $NDK_TOOLCHAIN/arm-linux-androideabi/include/c++/4.6 $NDK_TOOLCHAIN/arm-linux-androideabi/include/c++/4.6.x-google

这在很大程度上解决了它。然而,现在 ndkr8b 已经发布了官方的 GCC 4.6 支持,这个 bug 仍然存在(截至 2012 年 7 月 25 日)。有关与独立工具链相关的一些错误的更多详细信息 (http://code.google.com/p/android/issues/detail?id=35279)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2017-12-05
    • 2021-01-05
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多