我想用自定义版本的 musl 构建静态 Rust 可执行文件。作为第一步,我让自己熟悉 Rust 的构建系统。
我采用了稍微过时的docker-rust-musl
GitHub 项目并更新了过时的 URL。一切似乎都适用于构建,但是当我想用编译器编译时x86_64-unknown-linux-musl
找不到 musl std
crate:
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。