人人都会AI编程

Release 配置、LTO 优化、代码裁剪、Strip 符号剥离

更新时间:2026-07-11

在 Tauri 应用中,最终生成的安装包体积主要取决于两个部分:前端资源和你用 Rust 编写的后端内核。想要把后端二进制压到最小,就需要在 Cargo 的发布配置(Release Profile)上做针对性调优。下面四个设置是最直接、最有效的体积优化手段,配置起来也很简单。


Release 配置基础
Rust 的默认发布模式(cargo build --release)使用 opt-level = 3,该级别优先考虑运行速度,二进制体积往往偏大。如果你希望尽量缩小体积,可以将优化目标改为 "s""z"。两者都会启用体积相关的优化,其中 "z" 更激进,但有可能轻微影响运行时性能。对于绝大多数 Tauri 应用,"s" 已经足够理想。

[profile.release]
opt-level = "s"

LTO(链接时优化)
LTO 让编译器能在整个项目(包括依赖库)的范围进行内联、死代码消除,效果远超单个 crate 内的优化。通常开启 lto = true(即 “thin” LTO)即可兼顾编译速度和体积削减;若追求极致,可设为 "fat",但构建时间会明显变长。对于发布到用户的版本,这是必选项。

lto = true

代码裁剪(减少编译单元)
Rust 默认将代码分成多个 codegen-units 并行编译,加快开发速度,但这会阻碍死代码的彻底消除。将 codegen-units 设为 1 后,所有代码在同一个单元内优化,编译器能更有效地删除用不上的函数和数据结构,对二进制瘦身帮助极大。一般与 LTO 配合使用。

codegen-units = 1

Strip 符号剥离
编译后的二进制中带有调试符号、内部函数名等信息,这些对最终用户毫无意义却占据可观空间。设置 strip = true 可以在链接后自动剥除这些符号,瞬间砍掉几百 KB 甚至更多。如果希望保留部分符号以便在生产环境分析崩溃堆栈,也可以使用 strip = "symbols"(仅去调试符号)。这一步代价极小,建议始终开启。

strip = true

实战组合:一个专为体积优化的配置
把上述四项组合起来,再辅以一个可选的 panic = "abort"(移除栈展开代码),你的 src-tauri/Cargo.toml 看起来会是这样的:

[profile.release]
opt-level = "z"      # 优先体积
lto = true           # 链接时优化
codegen-units = 1    # 单编译单元,强化死代码消除
strip = true         # 剥除符号
panic = "abort"      # 可选,进一步削减体积

实际效果
一个默认构建出 4~5 MB 的 Tauri Rust 内核,经过这套配置后可以轻松降到 500 KB ~ 1.2 MB(视依赖数量而定)。安装包整体体积也会随之减至 2~3 MB,在低带宽分发或嵌入式部署中优势非常明显。不过,这些优化会显著增加发布构建的时间,所以更适合在 CI 流水线或正式发版时启用,日常开发可保留默认配置以保证编译速度。