![NDK r20 嵌入式工具鏈在 MacOS 上失敗](https://rvso.com/image/1711446/NDK%20r20%20%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%B7%A5%E5%85%B7%E9%8F%88%E5%9C%A8%20MacOS%20%E4%B8%8A%E5%A4%B1%E6%95%97.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 /)
--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 頁面