Android ndk 编译器(clang,android ndk r18)可以';找不到stl_algobase.h

Android ndk 编译器(clang,android ndk r18)可以';找不到stl_algobase.h,android-ndk,Android Ndk,由于ndk更新为r18,尝试编译某些内容时出现以下错误: make[1]: *** No rule to make target `/...../toolchains/arm/21/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../include/c++/4.9.x/bits/stl_algobase.h', needed by `something.o'. Stop. 手动查找文件夹“bits”表明它不存在。因此,当然存在这个错误

由于ndk更新为r18,尝试编译某些内容时出现以下错误:

make[1]: *** No rule to make target `/...../toolchains/arm/21/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../include/c++/4.9.x/bits/stl_algobase.h', needed by `something.o'.  Stop.
手动查找文件夹“bits”表明它不存在。因此,当然存在这个错误,因为编译器找不到'stl_algobase.h'

据我所知,“gnustl、gabi++和stlport已被删除。”()因此“默认情况下将使用libc++的共享库版本。”()

我正在使用独立工具链的clang++&clang编译器和以下标志:

CXXFLAGS        := -fPIE -fPIC
CXXFLAGS        += -std=c++14
注:

1) 使用“CXXFLAGS+=-stdlib=libstdc++”是相同的

2) 我也尝试了'cxflags+=-stdlib=libc++',但是编译器会给出这个额外的错误:“致命错误:'vector'file not found”

我的第一个想法是,由于某些原因,stl没有正确链接。很可能是缺少了一些标志,或者独立工具链的安装错误。我是这样做的:

sudo /...../Library/Android/sdk/ndk-bundle/build/tools/make_standalone_toolchain.py --api 21 --install-dir /...../Developer/toolchains/arm/21 --arch arm --force --verbose

如果这是我一直在想的事情,那该怎么做呢?或者是我没有想到的不同的事情?如何在Android NDK的外部makefile中正确使用libc++?

您需要
使其干净
或任何与您的项目等效的东西。您的out目录中有过时的依赖项文件。

您需要清理
或任何与项目等效的文件。您的out目录中有过时的依赖项文件。

就是这样!但是你能告诉我,你是怎么知道/发现的?错误消息没有让我想到这一点。让目标从一个对象文件指向一个不存在的头的任何规则都不能很好地指示一个过时的dep文件。就是这样!但是你能告诉我,你是怎么知道/发现的?错误消息没有让我想到这一点。没有规则可以让目标从一个对象文件指向一个不存在的头,这是一个陈旧的dep文件的很好的指示。