NDK r20 嵌入式工具鏈在 MacOS 上失敗

NDK r20 嵌入式工具鏈在 MacOS 上失敗

我正在嘗試建立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 /)

--sysroot用於傳遞參數而不是參數的 MacOS NDK 工具鍊是否有問題-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 上有同樣的問題。我認為 r19c 和 r20 上的 NDK 有問題

答案2

需要指定工具鏈:

-DCMAKE_TOOLCHAIN_FILE=${HOME}/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake

Android Gradle 外掛程式使用此參數呼叫 CMake,不會導致錯誤。看NDK 的 CMake 頁面

相關內容