![Die eingebettete NDK r20-Toolchain schlägt unter MacOS fehl](https://rvso.com/image/1711446/Die%20eingebettete%20NDK%20r20-Toolchain%20schl%C3%A4gt%20unter%20MacOS%20fehl.png)
Ich versuche zu bauenlibzmqfür Android mit CMake und der im NDK eingebetteten Toolchain.
Mein System ist MacOS 10.14.3
Ich habe gerade das neuste NDK [r20] heruntergeladen, aber das Problem bestand bereits bei r19c.
Der CMake-Prozess schlägt fehl, wenn er versucht, ein „einfaches Testprogramm“ zu kompilieren und sagt:
ld: unknown option: --sysroot=/Users/me/android-ndk-r20/platforms/android-28/arch-arm
Ich habe versucht, eine andere Bibliothek (benutzerdefiniert) zu kompilieren, um zu bestätigen, dass es sich um ein Toolchain-Problem handelt, und habe denselben Fehler erhalten.
In der --help
Ausgabe des Compilers (aus der eingebetteten Toolchain) habe ich Folgendes gefunden:
-isysroot <dir> Set the system root directory (usually /)
Könnte es ein Problem mit der NDK-Toolchain für MacOS geben, die den --sysroot
Parameter statt des -isysroot
einen übergibt?
Gibt es eine Problemumgehung? (Vielleicht etwas, das in die CMake-Toolchain-Datei hinzugefügt werden muss?)
Hier ist meine CMake-Toolchain-Datei:
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)
In der Zwischenzeit werde ich dies über ein Ubuntu-Docker-Image ausführen und sehen, wie es läuft.
Antwort1
Ich hatte unter OSX genau das gleiche Problem und bin schließlich zur NDK-18b-Revision zurückgekehrt, die für meine Zwecke funktionierte.
Gleiches Problem beim NDK Rev 19c. Ich denke, es gibt ein Problem mit dem NDK bei r19c und r20
Antwort2
Die Toolchain muss angegeben werden:
-DCMAKE_TOOLCHAIN_FILE=${HOME}/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake
Das Android Gradle Plugin ruft CMake mit diesem Argument auf, was zu keinem Fehler führt. SieheNDKs CMake-Seite