因为Rust用静态链接(static linking)来编译可执行文件。
也就是说,所有依赖的库,都会编译进去。当然也包含了Rus runtime
可以添加
-C prefer-dynamic
命令行参数, 来让rust编译器是用动态链接。
如果用cargo,这个选项也要传给rustc
cargo rustc --debug -- -C prefer-dynamic 或者 cargo rustc --release -- -C prefer-dynamic
进一步,在Cargo.toml中配置,也可以减少一些体积
[profile.release] opt-level = 'z' # Optimize for size. lto = true # Enable Link Time Optimization codegen-units = 1 # Reduce number of codegen units to increase optimizations. panic = 'abort' # Abort on panic strip = true # Strip symbols from binary*
https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html
https://stackoverflow.com/questions/29008127/why-are-rust-executables-so-huge