为什么rust编译出的可执行文件体积那么大

因为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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注