Per evitare errori GLIBC, è possibile compilare la propria versione di Rust rispetto a una libc alternativa statica, musl.
Ottenere l'ultima release stabile di MUSL e costruirlo con l'opzione --disable-shared
:
$ mkdir musldist
$ PREFIX=$(pwd)/musldist
$ ./configure --disable-shared --prefix=$PREFIX
poi costruire Rust contro MUSL:
$ ./configure --target=x86_64-unknown-linux-musl --musl-root=$PREFIX --prefix=$PREFIX
quindi creare il Progetto
$ echo 'fn main() { println!("Hello, world!"); }' > main.rs
$ rustc --target=x86_64-unknown-linux-musl main.rs
$ ldd main
not a dynamic executable
Per maggiori informazioni, guarda la sezione advanced linking della documentazione.
Come riportato nella documentazione originale:
Tuttavia, potrebbe essere necessario ricompilare le librerie native contro MUSL prima che possano essere collegati contro.
È anche possibile utilizzare rustup.
Rimuovere vecchia ruggine installato da rustup.sh
$ sudo /usr/local/lib/rustlib/uninstall.sh # only if you have
$ rm $HOME/.rustup
Installare 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
Stai chiedendo informazioni su binari "portatile", ma è solo lista un sistema (Ubuntu) senza alcuna informazione sulla versione. Ci sono più sistemi coinvolti? In caso affermativo, quali sono le distribuzioni e le loro versioni? – Shepmaster