首页 > 解决方案 > 我们如何为 riscv-linux 交叉编译静态链接的 rust 程序?

问题描述

我发现目标 riscv64gc-unknown-linux-musl 可能会有所帮助。当我尝试添加目标时,我被告知

工具链“nightly-x86_64-unknown-linux-gnu”不包含目标“riscv64gc-unknown-linux-musl”的组件“rust-std”

help: 考虑cargo build -Z build-std改用

所以我运行了这个命令,“cargo build -Z build-std --target riscv64gc-unknown-linux-musl”,但是得到了很多编译错误:

error[E0412]: cannot find type `c_char` in the crate root
  --> /home/simon/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libc-0.2.93/src/unix/mod.rs:45:29
   |
6  | pub type c_schar = i8;
   | ---------------------- similarly named type alias `c_schar` defined here
...
45 |         pub gr_name: *mut ::c_char,
   |                             ^^^^^^ help: a type alias with a similar name exists: `c_schar`

>error[E0412]: cannot find type `c_char` in the crate root
  --> /home/simon/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libc-0.2.93/src/unix/mod.rs:46:31
   |
6  | pub type c_schar = i8;
   | ---------------------- similarly named type alias `c_schar` defined here
...
46 |         pub gr_passwd: *mut ::c_char,
   |                               ^^^^^^ help: a type alias with a similar name exists: `c_schar`
error: aborting due to 679 previous errors

部分错误有详细解释:E0412、E0425、E0573。有关错误的更多信息,请尝试rustc --explain E0412.

error: could not compile `libc`

我如何理解 build-std 的细节并使其工作?通过阅读 cargo 和 rust 的源代码?

标签: linuxrustcross-compilingrust-cargoriscv

解决方案


推荐阅读