Để tránh lỗi GLIBC, bạn có thể biên dịch phiên bản Rust của riêng bạn thành libc thay thế tĩnh, musl.
Lấy phiên bản ổn định mới nhất của musl và xây dựng nó với tùy chọn --disable-shared
:
$ mkdir musldist
$ PREFIX=$(pwd)/musldist
$ ./configure --disable-shared --prefix=$PREFIX
sau đó xây dựng Rust chống musl:
$ ./configure --target=x86_64-unknown-linux-musl --musl-root=$PREFIX --prefix=$PREFIX
sau đó xây dựng dự án của bạn
$ echo 'fn main() { println!("Hello, world!"); }' > main.rs
$ rustc --target=x86_64-unknown-linux-musl main.rs
$ ldd main
not a dynamic executable
Đối biết thêm thông tin, xem phần advanced linking của tài liệu.
Theo báo cáo trong các tài liệu gốc:
Tuy nhiên, bạn có thể cần phải biên dịch lại thư viện mẹ đẻ của bạn chống lại musl trước khi họ có thể liên kết chống lại.
Bạn cũng có thể sử dụng rustup.
Di Rust cũ được cài đặt bởi rustup.sh
$ sudo /usr/local/lib/rustlib/uninstall.sh # only if you have
$ rm $HOME/.rustup
Install 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
Bạn đang hỏi về mã nhị phân "xách tay", nhưng bạn chỉ có danh sách một hệ thống (Ubuntu) mà không cần bất kỳ thông tin phiên bản. Có nhiều hệ thống liên quan? Nếu vậy các bản phân phối và phiên bản của chúng là gì? – Shepmaster