使用Creating a basic webservice in Rust和Taking Rust everywhere with rustup作为文档,我已成功使用Rust编译64位静态二进制文件:
rustup target add x86_64-unknown-linux-musl
cargo build --target=x86_64-unknown-linux-musl
但我似乎无法找到如何构建32位静态二进制文件。
我在运行i686-unknown-linux-musl
时确实找到了rustc --print target-list
目标,但发现它在运行rustup target list
时不可用。
我错过了什么或者不可能吗?
答案 0 :(得分:7)
i686-unknown-linux-musl
的标准二进制文件仅适用于Rust 1.10或更新版本。您可以使用以下命令为i686
创建静态二进制文件:
$ rustup default stable # stable must at least 1.10
$ rustup target add i686-unknown-linux-musl
$ cargo build --target i686-unknown-linux-musl
可以在target/i686-unknown-linux-musl/debug/
或target/i686-unknown-linux-musl/release/
上找到生成的二进制文件。
我们可以检查生成的二进制文件是否与ldd
静态链接:
$ ldd target/i686-unknown-linux-musl/debug/main
not a dynamic executable