自将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已被删除。” (https://github.com/android-ndk/ndk/wiki/Changelog-r18)因此,“默认情况下将使用libc ++的共享库版本。” (https://developer.android.com/ndk/guides/standalone_toolchain#c_stl_support)
我正在使用独立工具链的clang ++和clang编译器以及以下标志:
CXXFLAGS := -fPIE -fPIC
CXXFLAGS += -std=c++14
注意:
1)使用'CXXFLAGS + = -stdlib = libstdc ++'相同。
2)我也尝试过'CXXFLAGS + = -stdlib = libc ++',但随后编译器将给出此额外错误:'致命错误:未找到'vector'文件'
我首先想到的是,由于某种原因,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 ++?
答案 0 :(得分:2)
您需要make clean
或任何与您项目等效的项目。您的out目录中有过时的依赖文件。