![Встроенный набор инструментов NDK r20 не работает на MacOS](https://rvso.com/image/1711446/%D0%92%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%20%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2%20NDK%20r20%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%BD%D0%B0%20MacOS.png)
Я пытаюсь построитьlibzmqдля Android с использованием CMake и набора инструментов, встроенного в NDK.
Моя система — MacOS 10.14.3.
Я только что скачал последнюю версию NDK [r20], но проблема уже была в r19c.
Процесс CMake завершается ошибкой при попытке скомпилировать «простую тестовую программу» и выдает сообщение:
ld: unknown option: --sysroot=/Users/me/android-ndk-r20/platforms/android-28/arch-arm
Я попытался скомпилировать другую библиотеку (пользовательскую), чтобы подтвердить, что проблема в цепочке инструментов, и получил ту же ошибку.
В --help
выводе компилятора (из встроенного набора инструментов) я обнаружил следующее:
-isysroot <dir> Set the system root directory (usually /)
Может ли быть проблема с цепочкой инструментов NDK для MacOS, которая передает --sysroot
параметр вместо -isysroot
одного?
Есть ли обходной путь? (Вроде чего-то, что нужно добавить в файл цепочки инструментов CMake, может быть?)
Вот мой файл набора инструментов CMake:
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 28) # API level
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
set(CMAKE_ANDROID_ARM_MODE ON)
set(CMAKE_ANDROID_NDK /Users/me/android-ndk-r20)
set(CMAKE_ANDROID_STL_TYPE c++_static)
А пока я запущу это через образ Ubuntu Docker и посмотрю, что из этого получится.
решение1
Я столкнулся с точно такой же проблемой на OSX и в итоге вернулся к версии NDK 18b, и она подошла мне.
Та же проблема на NDK Rev 19c. Я думаю, что проблема с NDK на r19c и r20
решение2
Необходимо указать цепочку инструментов:
-DCMAKE_TOOLCHAIN_FILE=${HOME}/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake
Плагин Android Gradle вызывает CMake с этим аргументом, что не приводит к ошибке. См.Страница NDK CMake