如何为本机和WASM工具链优化可执行二进制文件的大小



我是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论坛上,这里有一个关于选项利弊的深入讨论,开发者必须按大小优化二进制。