Tauri Rust 編譯時優(yōu)化

2023-10-19 17:11 更新

為了減小 Rust 可執(zhí)行文件的大小,你可以配置 Cargo 項目以充分利用 Rust 的大小優(yōu)化功能。以下是一些推薦的選項,以便在構(gòu)建 Tauri 應(yīng)用程序時減小可執(zhí)行文件的大?。?/p>

[profile.release]
panic = "abort" # 去除昂貴的 panic 清理邏輯 codegen-units = 1 # 一個接一個地編譯 crate,以便編譯器能夠更好地進行優(yōu)化 lto = true # 啟用鏈接優(yōu)化 opt-level = "s" # 為二進制大小進行優(yōu)化 strip = true # 去除調(diào)試符號

上述選項的含義如下:

  • panic = "abort":當(dāng)發(fā)生 panic 時,去除昂貴的 panic 清理邏輯。
  • codegen-units = 1:一個接一個地編譯 crate,以便編譯器能夠更好地進行優(yōu)化。
  • lto = true:啟用鏈接優(yōu)化。
  • opt-level = "s":為二進制大小進行優(yōu)化。
  • strip = true:去除調(diào)試符號。

需要注意的是,也可以使用 opt-level = "z" 來減小生成的二進制文件的大小。"s" 和 "z" 有時會產(chǎn)生不同大小的文件,因此建議對你的應(yīng)用程序進行測試,以確定哪個選項效果更好。

另外,如果你的 Rust 項目使用了 Tauri 并且默認情況下啟用了資源壓縮功能,你也可以考慮禁用 Tauri 的資源壓縮來減小可執(zhí)行文件的大小。在 Cargo.toml 文件中,通過將 default-features 設(shè)置為 false 并指定除壓縮功能之外的所有功能,來禁用資源壓縮。例如:

[dependencies]
tauri = { version = "...", features = ["objc-exception", "wry"], default-features = false }

請注意,下面提到的一些方法涉及使用不穩(wěn)定的編譯器特性,并需要 Rust 的 nightly 版本。如果你使用的是 nightly 版本的 Rust,你可以嘗試以下操作來設(shè)置 nightly 工具鏈并添加 rust-src nightly 組件:

rustup toolchain install nightly
rustup component add rust-src --toolchain nightly

然后,你可以創(chuàng)建一個名為 rust-toolchain.toml 的文件,以告訴 Cargo 使用 nightly 工具鏈。文件內(nèi)容如下:

[toolchain]
channel = "nightly-2023-01-03" # 使用的 nightly 版本,你可以更新為最新版本 profile = "minimal"

最后,你可以使用以下命令來為 std 庫應(yīng)用優(yōu)化選項:

cargo tauri build --target <目標(biāo)三元組> -- -Z build-std

如果在發(fā)布配置的優(yōu)化中使用了 panic = "abort",你需要確保 panic_abort crate 使用了 std。此外,可以進一步減小二進制文件大小,如下所示:

cargo tauri build --target <目標(biāo)三元組> -- -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort

這些選項都涉及到使用不穩(wěn)定的編譯器特性,并需要 Rust 的 nightly 版本。請查閱不穩(wěn)定特性文檔以獲取更多關(guān)于 -Z build-std 和 -Z build-std-features 的詳細信息。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號