Die eingebettete NDK r20-Toolchain schlägt unter MacOS fehl

Die eingebettete NDK r20-Toolchain schlägt unter MacOS fehl

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 --helpAusgabe 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 --sysrootParameter statt des -isysrooteinen ü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

verwandte Informationen