rust - ld.exe : cannot find -llog -lgcc -lc

标签 rust android-ndk

我正在尝试在x86_64-pc-windows-msvc主机上编译x86_64-linux-android目标。这是我的.cargo/config:

[target.x86_64-linux-android]
ar = "C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ar"
linker = "C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ld"
当我用cargo build --target=x86_64-linux-android --target-dir=./out(cdylib类型)编译项目时,出现以下错误:
 note: C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ld.exe: error: cannot find -ldl
          C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ld.exe: error: cannot find -llog
          C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ld.exe: error: cannot find -lgcc
          C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ld.exe: error: cannot find -lc
          C:/android-ndk-r10e/toolchains/x86_64-4.9/prebuilt/windows-x86_64/bin/x86_64-linux-android-ld.exe: error: cannot find -lm
在目录工具链的bin目录中,我看到了以下可能的文件:
03/31/2015  04:13 AM           973,312 x86_64-linux-android-addr2line.exe
03/31/2015  04:13 AM           998,400 x86_64-linux-android-ar.exe
03/31/2015  04:13 AM         1,745,408 x86_64-linux-android-as.exe
03/31/2015  04:13 AM           902,656 x86_64-linux-android-c++.exe
03/31/2015  04:13 AM           971,264 x86_64-linux-android-c++filt.exe
03/31/2015  04:13 AM           901,632 x86_64-linux-android-cpp.exe
03/31/2015  04:13 AM         2,917,376 x86_64-linux-android-dwp.exe
03/31/2015  04:13 AM            63,488 x86_64-linux-android-elfedit.exe
03/31/2015  04:13 AM           902,656 x86_64-linux-android-g++.exe
03/31/2015  04:13 AM           899,584 x86_64-linux-android-gcc-4.9.exe
03/31/2015  04:13 AM            59,904 x86_64-linux-android-gcc-ar.exe
03/31/2015  04:13 AM            59,392 x86_64-linux-android-gcc-nm.exe
03/31/2015  04:13 AM            59,392 x86_64-linux-android-gcc-ranlib.exe
03/31/2015  04:13 AM           899,584 x86_64-linux-android-gcc.exe
03/31/2015  04:13 AM           558,080 x86_64-linux-android-gcov-tool.exe
03/31/2015  04:13 AM           529,408 x86_64-linux-android-gcov.exe
03/31/2015  04:13 AM         5,268,992 x86_64-linux-android-gdb-orig.exe
03/31/2015  04:13 AM            42,496 x86_64-linux-android-gdb.exe
03/31/2015  04:13 AM         1,039,872 x86_64-linux-android-gprof.exe
03/31/2015  04:13 AM         1,793,024 x86_64-linux-android-ld.bfd.exe
03/31/2015  04:13 AM         4,641,792 x86_64-linux-android-ld.exe
03/31/2015  04:13 AM         4,641,792 x86_64-linux-android-ld.gold.exe
12/30/2014  03:14 AM         2,127,360 x86_64-linux-android-ld.mcld.exe
03/31/2015  04:13 AM           983,040 x86_64-linux-android-nm.exe
03/31/2015  04:13 AM         1,140,736 x86_64-linux-android-objcopy.exe
03/31/2015  04:13 AM         2,069,504 x86_64-linux-android-objdump.exe
03/31/2015  04:13 AM           998,400 x86_64-linux-android-ranlib.exe
03/31/2015  04:13 AM           497,152 x86_64-linux-android-readelf.exe
03/31/2015  04:13 AM           973,824 x86_64-linux-android-size.exe
03/31/2015  04:13 AM           973,824 x86_64-linux-android-strings.exe
03/31/2015  04:13 AM         1,140,736 x86_64-linux-android-strip.exe
在类似的StackOverflow帖子中(请参阅:Failed to cross-compile library from Windows to Android),使用的链接器是clang,但我似乎找不到它。我不确定在这种情况下是否还要传递“链接器”

最佳答案

我必须更改ndk版本,并在llvm工具链中使用已编译的版本:

[target.x86_64-linux-android]
ar = "C:/android-ndk-r21d/toolchains/llvm/prebuilt/windows-x86_64/bin/x86_64-linux-android-ar"
linker = "C:/android-ndk-r21d/toolchains/llvm/prebuilt/windows-x86_64/bin/x86_64-linux-android29-clang.cmd"
有一个特别的说明,如前面提到的线程所示,请使用批处理文件。

关于rust - ld.exe : cannot find -llog -lgcc -lc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63612908/

相关文章:

rust - 可以在此处匹配 Result 替换为 map_err 和 "?"

types - Rust 中的类型级映射

android - android中的FFMPEG命令行执行

java - 将电脑上的C++opencv项目转成opencv android的步骤

java - c JNI调用java函数

parsing - 将迭代器取消交错为两个单独的迭代器

rust - 如何将 "x-y"翻译成 vec![x, x+1, … y-1, y]?

enums - 变体中没有数据的枚举的二进制代码序列化是否与引用静态值一样优化?

android - 无法在 AndroidManifest.xml 中设置可调试标志

android - 找不到 JNI 方法