How do I fix "ld: error: unable to find library -lgcc" when cross-compiling rust to android?
How do I fix "ld: error: unable to find library -lgcc" when cross-compiling rust to android?
我正在尝试让 Rust 在 android 上运行。但是,当我尝试交叉编译为 android 时,出现以下链接错误:
$ cargo build --target=arm-linux-androideabi
Compiling <project> v0.1.0 (<project>)
error: linking with `/opt/android-sdk/ndk/23.0.7599858/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi31-clang` failed: exit status: 1
(very long toolchain command from cargo)
ld: error: unable to find library -lgcc
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
我已经安装了 ndk 并将 .cargo/config
中的链接器更改为 android clang 链接器。我还尝试了具有相同结果的独立工具链。我使用的指南如下:https://mozilla.github.io/firefox-browser-architecture/experiments/2017-09-21-rust-on-android.html
当使用 crate-type = ["rlib"]
而不是 crate-type = ["cdylib"]
时交叉编译确实有效,但我需要一个 .so
文件而不是 .rlib
文件。
如果相关,我正在使用 Manjaro Linux。
更新:
我发现了以下 pull request:https://github.com/rust-lang/rust/pull/85806 切换到 ndk22 后它起作用了。我还没有尝试过拉取请求是否解决了问题(可能会解决)。
我正在尝试让 Rust 在 android 上运行。但是,当我尝试交叉编译为 android 时,出现以下链接错误:
$ cargo build --target=arm-linux-androideabi
Compiling <project> v0.1.0 (<project>)
error: linking with `/opt/android-sdk/ndk/23.0.7599858/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi31-clang` failed: exit status: 1
(very long toolchain command from cargo)
ld: error: unable to find library -lgcc
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
我已经安装了 ndk 并将 .cargo/config
中的链接器更改为 android clang 链接器。我还尝试了具有相同结果的独立工具链。我使用的指南如下:https://mozilla.github.io/firefox-browser-architecture/experiments/2017-09-21-rust-on-android.html
当使用 crate-type = ["rlib"]
而不是 crate-type = ["cdylib"]
时交叉编译确实有效,但我需要一个 .so
文件而不是 .rlib
文件。
如果相关,我正在使用 Manjaro Linux。
更新:
我发现了以下 pull request:https://github.com/rust-lang/rust/pull/85806 切换到 ndk22 后它起作用了。我还没有尝试过拉取请求是否解决了问题(可能会解决)。