6

我想用自定义版本的 musl 构建静态 Rust 可执行文件。作为第一步,我让自己熟悉 Rust 的构建系统。

我采用了稍微过时的docker-rust-muslGitHub 项目并更新了过时的 URL。一切似乎都适用于构建,但是当我想用编译器编译时x86_64-unknown-linux-musl找不到 musl stdcrate:

root@beb234fba4af:/build# cat example.rs
fn main() { println!("hi!"); panic!("failed"); }

root@beb234fba4af:/build# rustc --target=x86_64-unknown-linux-musl example.rs
error[E0463]: can't find crate for `std`
  |
  = note: the `x86_64-unknown-linux-musl` target may not be installed

error: aborting due to previous error

实际上,/usr/local/lib/rustlib/仅包含x86_64-unknown-linux-gnu目录,即使构建期间的输出表明x86_64-unknown-linux-musl已构建:

[...]
Building stage2 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-musl)
[...]

但是,当涉及到安装步骤时,x86_64-unknown-linux-gnu却无处可寻:

[...]
Install std stage2 (x86_64-unknown-linux-gnu)
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rust-std-x86_64-unknown-linux-gnu'

    std is standing at the ready.

Install rustc stage2 (x86_64-unknown-linux-gnu)
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'

    Rust is ready to roll.

Build completed in 0:31:07

x86_64-unknown-linux-musl安装Rust 标准库我需要做什么?

进步:

挖掘构建环境后发现,它make all构建了 Ruststd库,musl但后续make install步骤不会安装它。我们在前面提到的 docker 镜像的脚本中有一个临时修复。build.sh目前尚不清楚这是构建环境的问题还是其使用的问题。

Rust 开发人员知道这个问题。但是,没有修复的 eta。

4

0 回答 0