【问题标题】:Why does the Rust compiler generate huge executables?为什么 Rust 编译器会生成巨大的可执行文件?
【发布时间】:2014-12-05 21:52:34
【问题描述】:

像这样编译一个简单的 hello world 应用程序:

fn main() {
    println!("Hello, World!");
}

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

为什么会发生这种情况以及减小可执行文件大小的最佳方法是什么?

【问题讨论】:

  • AFAIK,默认情况下,大部分或全部标准库都静态链接到二进制文件中。尝试优化-O 和/或strip。对于踢腿和咯咯笑,您还可以动态链接到 libstd 等(但不确定如何)。
  • -Z lto(链接时间优化)也大大缩小了内容。

标签: rust


【解决方案1】:
  1. 标准库默认是静态链接的。您可以通过将-C prefer-dynamic 选项传递给编译器来更改它。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这并非普遍适用。在 macOS 上使用 Rust 1.19.0,此命令会生成约 400K 的可执行文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2019-06-22
    相关资源
    最近更新 更多