我有一个简单的 .rs
文件,想用 rustc
编译它。我一直听说在 Release模式下编译是多么重要,否则我的 Rust 程序会很慢。
但是,如果我使用经常引用的 --release
标志,它就不起作用了。如果旗帜根本不存在,每个人都在谈论什么?
$ rustc --release foo.rs
error: Unrecognized option: 'release'.
最佳答案
你犯了一个简单的错误:--release
标志是 cargo
的标志。使用 rustc
打开优化的最简单方法是使用 -O
标志。
例子:
rustc -O foo.rs
rustc -C opt-level=3 foo.rs
cargo build --release
更多细节:
您可以使用不同级别的优化来编译您的 Rust 程序。 rustc -C help
说:
-C opt-level=val -- optimize with possible levels 0-3, s, or z
要获得最大程度的控制,您应该使用 rustc -C opt-level=3 foo.rs
(或任何其他级别)进行编译。然而,这并不总是必要的。通常,您可以使用 -O
; rustc --help
说:
-O Equivalent to -C opt-level=2
大多数时候 rustc -O foo.rs
是正确的选择。
另一方面,Cargo 的工作方式有点不同;或者至少 --release
标志可以。 Cargo 有不同的配置文件,它们规定了cargo
如何调用rustc
。最重要的是 dev
(development- 或 debug- 模式)和 release
。 --release
标志将默认配置文件从 dev
切换到 release
(duh!)。这可能会更改 rustc
调用的许多标志。最重要的是,它更改了 opt-level
和 debuginfo
的值:
$ rustc -C debuginfo=2 -C opt-level=0 # in `dev` profile/debug mode
$ rustc -C debuginfo=0 -C opt-level=3 # in `release` profile
您甚至可以在 Cargo.toml
中更改每个配置文件的设置。您可以找到有关配置文件和 this Cargo documentation 中使用的默认值的更多信息.
关于rust - "Unrecognized option ' 在 Release模式下使用 rustc 编译时发布 '",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45593026/