I am trying to create a static executable with Rust. I am not trying to statically link a particular library, I am trying to create a executable which does not use dynamic linking at all. I have the following (otherwise working) test:
$ cat hello.rs
fn main()
{
print!("Hello, world!
");
}
$ rustc hello.rs -o hello
$ file hello
hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, [etc]
Note the dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2
. Static executables have statically linked
instead. (And in my case corrupted section header size
, although I would be pleasantly astonished if I can convince Rust to replicate that.)
What options do I need to pass to rustc
to get it to generate a actual static executable (for concreteness: one which even file
agrees is statically linked).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…