ld:未知选项:--sysroot = / Users / myname / Library / Android / ndk / android-ndk-r20b / toolchains / llvm / prebuilt / darwin-x86_64 / sysroot

问题描述

我正在macOS上尝试使用纯 cmake 命令而不是gradle外部本机构建脚本来构建Android本机源代码。以下是我用来编译Android C / C ++代码的命令:

➜ /Users/myname/Library/Android/sdk/cmake/3.6.4111459/bin/cmake \
-DCMAKE_LINKER=/Users/myname/Library/Android/ndk/android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ld \
-DCMAKE_TOOLCHAIN_FILE=/Users/myname/Library/Android/ndk/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_STL=c++_static \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_ABI=arm64-v8a \
-DANDROID_NDK=/Users/myname/Library/Android/ndk/android-ndk-r20b \
-DANDROID_PLATFORM=android-23 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_MAKE_PROGRAM=/Users/myname/Library/Android/sdk/cmake/3.6.4111459/bin/ninja \
-G"Android Gradle - Ninja" \
..

通过运行以上命令,我总是遇到以下错误:

Run Build  
Command:"/Users/myname/Library/Android/sdk/cmake/3.6.4111459/bin/ninja"
"cmTC_2af97"

  [1/2] Building C object CMakeFiles/cmTC_2af97.dir/testCCompiler.c.o

  [2/2] Linking C executable cmTC_2af97

ld: unknown option:  
--sysroot=/Users/myname/Library/Android/ndk/android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/sysroot


  clang: error: linker command failed with exit code 1 (use -v to see 
invocation)

  ninja: build stopped: subcommand failed.


  CMake will not be able to correctly generate this project. Call
Stack (most recent call first):   CMakeLists.txt:3 (project) 

搜索后,似乎来自macOS的ld链接器将覆盖我的NDK的ld链接器。我尝试通过指定以下cmake选项来通过cmake-use-a-custom-linker中所说的CMake参数传递NDK链接器ld

-DCMAKE_LINKER=/Users/myname/Library/Android/ndk/android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ld

但仍然遇到相同的错误ld: unknown option: --sysroot xxx

有人对如何解决此错误有任何想法吗?感谢您的帮助。


此处有类似的问题:https://superuser.com/questions/1446914/ndk-r20-embedded-toolchain-fails-on-macos,但尚未得到答案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)