компилятор (clang, android ndk r18) не может найти stl_algobase.h - PullRequest
0 голосов
/ 18 октября 2018

Попытка что-то скомпилировать, поскольку при обновлении 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?

1 Ответ

0 голосов
/ 18 октября 2018

Вам нужно make clean или любой эквивалент вашего проекта.У вас есть устаревшие файлы зависимостей в вашей директории out.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...