刚找到Rust并阅读了文档的前两章后,我发现他们定义语言的方法和方式特别有趣。所以我决定弄湿我的手指,并开始使用Hello world ...
我是在Windows 7 x64上这样做的。
fn main() {
println!("Hello, world!");
}
发出cargo build
并查看结果后,targets\debug
我发现结果.exe
为3MB。经过一些搜索(很难找到货运命令行标志的文档...),我找到了--release
选项并创建了发布版本。令我惊讶的是,.exe的大小仅变小了一点:2.99MB而不是3MB。
因此,承认我是Rust及其生态系统的新手,我期望系统编程语言会产生紧凑的东西。
谁能详细说明Rust正在编译到什么内容,以及如何通过3线性程序生成如此大的图像?它可以编译到虚拟机吗?我是否错过了一个剥离命令(在发行版内部调试信息?)?还有什么可能让您了解正在发生的事情吗?
Rust使用静态链接来编译其程序,这意味着即使最简单的Hello world!
程序所需的所有库也将被编译到您的可执行文件中。这也包括Rust运行时。
要强制Rust动态链接程序,请使用命令行参数-C prefer-dynamic
; 这将导致文件大小大大减小,但同时要求Rust库(包括其运行时)在运行时可用于您的程序。这实质上意味着,如果计算机没有它们,则需要提供它们,与原始静态链接程序所占用的空间相比,它们会占用更多的空间。
为了可移植性,如果您要将程序分发给其他人,我建议您以您一直使用的方式静态链接Rust库和运行时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句