【发布时间】:2019-10-28 20:02:05
【问题描述】:
我有一个简单的.rs 文件并想使用rustc 编译它。我一直听说在发布模式下编译是多么重要,否则我的 Rust 程序会很慢。
但是,如果我使用经常引用的--release 标志,它就不起作用。如果旗子都不存在,大家都在讨论什么?
$ rustc --release foo.rs
error: Unrecognized option: 'release'.
【问题讨论】:
标签: rust
我有一个简单的.rs 文件并想使用rustc 编译它。我一直听说在发布模式下编译是多么重要,否则我的 Rust 程序会很慢。
但是,如果我使用经常引用的--release 标志,它就不起作用。如果旗子都不存在,大家都在讨论什么?
$ rustc --release foo.rs
error: Unrecognized option: 'release'.
【问题讨论】:
标签: rust
您犯了一个简单的错误:--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 是正确的选择。
另一方面,货物的工作方式有点不同;或者至少 --release 标志可以。 Cargo 有不同的配置文件,它们决定了cargo 如何调用rustc。最重要的是dev(开发-或调试-模式)和release。 --release 标志将默认配置文件从 dev 切换到 release(呃!)。这可能会更改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 中使用的默认值的更多信息。
【讨论】: