为避免 GLIBC 错误,您可以针对静态替代 libc musl 编译您自己的 Rust版本。
获取 musl 的最新稳定版本并使用选项构建它--disable-shared
:
$ mkdir musldist
$ PREFIX=$(pwd)/musldist
$ ./configure --disable-shared --prefix=$PREFIX
然后针对 musl 构建 Rust:
$ ./configure --target=x86_64-unknown-linux-musl --musl-root=$PREFIX --prefix=$PREFIX
然后构建你的项目
$ echo 'fn main() { println!("Hello, world!"); }' > main.rs
$ rustc --target=x86_64-unknown-linux-musl main.rs
$ ldd main
not a dynamic executable
有关更多信息,请查看文档的高级链接部分。
如原始文档中所述:
但是,您可能需要针对 musl 重新编译本机库,然后才能链接它们。
您也可以使用rustup。
删除由 rustup.sh 安装的旧 Rust
$ sudo /usr/local/lib/rustlib/uninstall.sh # only if you have
$ rm $HOME/.rustup
安装生锈
$ curl https://sh.rustup.rs -sSf | sh
$ rustup default nightly #just for ubuntu 14.04 (stable Rust 1.11.0 has linking issue)
$ rustup target add x86_64-unknown-linux-musl
$ export PATH=$HOME/.cargo/bin:$PATH
$ cargo new --bin hello && cd hello
$ cargo run --target=x86_64-unknown-linux-musl
$ ldd target/x86_64-unknown-linux-musl/debug/hello
not a dynamic executable