我是Rust的新手,到目前为止,我对它的设计感到惊讶。但我遇到了一些让我害怕在商业项目中使用它的事情。可执行二进制文件的大小;你好世界"应用程序为3.2Mb。
-rwxr-xr-x 2 kos kos 3,2M Jul 10 15:44 experiment_app_size
太棒了!
rustc
的版本为1.53.0
- 工具链为
stable-x86_64-unknown-linux-gnu
- 目标是
release
我想知道它是否计划在未来解决这个问题?有没有一种技术可以用来减小可执行二进制文件的大小?同样的问题与WASM工具链有关吗?
默认情况下,Rust优化的是执行速度,而不是二进制大小,因为对于绝大多数应用程序来说,这是理想的。但对于开发人员想要优化二进制大小的情况,Rust提供了实现这一点的机制。
- 在发布模式下构建
- 从二进制文件中删除符号
- 优化尺寸
- 启用链接时间优化
- 减少并行代码生成单元以提高优化
- 恐慌时中止
- 使用panic_immediate_abort删除恐慌字符串格式
- 删除带有#的core::fmt![no_main]与libstd的小心使用
- 正在删除带有#的libstd![no_std]
- 压缩二进制文件
上面描述的大多数技术都适用于本机和WASM工具链。遵循该指南;你好世界";二进制93k左右。
这里有一篇关于如何优化Rust WASM构建的二进制文件大小的专门文章。
在官方的Rust论坛上,这里有一个关于选项利弊的深入讨论,开发者必须按大小优化二进制。