Android 构建工具链找不到/缺少 STL 标头目录
Android Building Toolchain can't find/missing STL header directory
我已经手动构建了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文件都存在于正确的位置。如果我在使用这些自定义构建的工具链作为参考后构建了一个STANDARONE工具链,那么每个版本的所有头文件和编译的库。
==更新
强制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
将输出与谷歌的NDK构建进行比较,确实存在严重的差异。现在真正的问题是如何保证GCC的自定义构建指向适当的G++STL头位置。
原来是make-standalone-tolchain.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)。
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 函数中堆分配的效果与缺少堆分配的情况
- 缺少类型说明符,显式类型为"缺少错误"
- 在C应用程序中运行C++(带有STL)函数
- 使用2个键的cpp-stl::优先级队列排序不正确
- 在一定长度后从数组中打印时缺少整数
- 使用基类指针创建对象时,缺少派生类析构函数
- 在STL容器中使用模板类
- 不同的Visual Studio版本中缺少.dll
- 用C++中的CPerson(类)类型的对象初始化STL矢量
- 如何修复带有 clang 的参数'args'缺少默认参数的问题?
- 将stl字符串缩小到小于15个字符的容量
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- Cython 带 STL 矢量和没有 NumPy 可以从其他应用程序调用,缺少什么?
- 从 STL 容器继承并删除"新"运算符以防止由于缺少虚拟析构函数而导致未定义的行为是否有意义?
- iota_n(STL中缺少的算法)的一个好的实现
- Android 构建工具链找不到/缺少 STL 标头目录
- 缺少字符串和STL容器的隐式转换
- C++stl错误,因为缺少常量