Попытка что-то скомпилировать, поскольку при обновлении 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.
Поиск вручную папки «биты» показал, что ее там нет.Так что, конечно, есть эта ошибка, потому что компилятор не может найти '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 ++ ', но затем компилятор выдаст эту дополнительную ошибку:' фатальная ошибка: 'вектор' файл не найден '
Моя первая мысль - по какой-то причине 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
Если это то, о чем я думал, то как это сделать правильно?Или это может быть что-то другое, о чем я не думал?Как правильно использовать libc ++ во внешнем make-файле с Android NDK?