当前位置: 首页 > 知识库问答 >
问题:

为什么Rust编译器会生成巨大的可执行文件?

廖绍辉
2023-03-14

编译一个简单的hello world应用程序,如下所示:

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

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

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

共有2个答案

麻宜春
2023-03-14

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

薛兴德
2023-03-14

>

  • 标准库默认静态链接。您可以通过向编译器传递-C prevery-动态选项来改变这一点。

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

  •  类似资料:
    • 问题内容: 我编写了一个hello world Go程序,该程序在linux机器上生成了本机可执行文件。但是我很惊讶地看到简单的Hello world Go程序的大小为1.9MB! 为什么Go中如此简单的程序的可执行文件如此庞大? 问题答案: 确切的问题出现在官方常见问题解答中: 为什么我的琐碎程序这么大的二进制文件? 引用答案: 在GC工具链(连接体,和)做静态链接。因此,所有Go二进制文件都包

    • 问题内容: 我刚刚使用Eclipse编写了一个简单程序,并且想将其编译为可执行文件,但似乎根本找不到如何执行的方法。 问题答案: 你可以通过以下方式将.jar文件转换为.exe: 1- JSmooth .exe包装器: JSmooth是Java可执行包装器。它为Java应用程序创建本机Windows启动器(标准.exe)。由于它能够自行查找任何已安装的Java VM,因此它使Java部署更加流畅和

    • 问题内容: 在kivy论坛中没有得到回应,因此请在这里尝试。 当我将教程pong代码编译为一个文件可执行文件时,我仍然必须将pong.kv文件包含在同一文件夹中才能运行。否则,启动exe时出现以下错误: 如何使它作为一个可执行文件运行。这是我的pong.spec文件: 请注意,我尝试将pong.kv包括在数据列表中,但这没有帮助。 谢谢,-Raj 问题答案: 根据KeyWeeUsr提供的链接(将数

    • 问题内容: 有没有办法查看在* nix中使用了哪些编译器和标志来创建可执行文件?我已经编译了一个旧版本的代码,我想看看它是经过优化还是未经优化而编译的。Google并没有太大的帮助,但是我不确定我使用的关键字是否正确。 问题答案: gcc 为此提供了一个选项: 之后,ELF可执行文件将包含带有该信息的部分。 当然,如果没有该选项编译的可执行文件将无法使用。 对于简单的优化情况,如果文件是使用调试信

    • 问题内容: 当Java编译器将原语自动包装到包装类时,它在幕后生成什么代码?我想象它调用: 包装器上的valueOf()方法 包装器的构造函数 还有其他魔术吗? 问题答案: 您可以使用该工具亲自查看。编译以下代码: 编译和反汇编: 输出为: 因此,如您所见,自动装箱将调用static方法,而自动拆箱将在给定对象上调用。没什么,真的- 只是语法糖。

    • 如果我尝试编译 Java编译器会产生一个错误,说。但是如果我添加另一个“unreacable”(根据我的说法)语句并使其: 它可以编译。为什么不产生错误?