NDK r20 嵌入式工具链在 MacOS 上失败

NDK r20 嵌入式工具链在 MacOS 上失败

我正在尝试建立对于 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 /)

--sysrootMacOS 的 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 页面

相关内容