为什么Rust编译器生成的可执行文件如此庞大?

8
编译一个简单的hello world应用程序,像这样:
fn main() {
    println!("Hello, World!");
}

使用默认编译器选项(rustc hello.rs)生成了一个相对巨大的822 KB可执行文件。

为什么会这样,有什么最好的方法来减小可执行文件的大小呢?


6
据我所知,默认情况下,标准库的大部分或全部内容都会以静态方式链接到二进制文件中。尝试使用优化选项“-O”和/或“strip”。为了好玩,你也可以动态地链接到libstd等库(不过我不确定如何操作)。 - sellibitze
-Z lto(链接时优化)也可以大幅缩小文件大小。 - Chris Morgan
2个回答

12
  1. 默认情况下,标准库以静态方式链接。您可以通过向编译器传递-C prefer-dynamic选项来更改它。

  2. Rust仍然是一种非常年轻的语言,具有未完全优化的编译器。在编译速度、代码速度和大小、错误消息措辞等方面仍有很大的改进空间。


0

rustc -C opt-level=2 hello.rs 会生成一个4kb的二进制文件


1
这并非普遍适用。在 macOS 上使用 Rust 1.19.0,该命令会生成一个约为 400K 的可执行文件。 - Shepmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接