我有一个简单的.rs
文件,想要使用rustc
进行编译。我总是听说在发布模式下编译是多么重要,因为否则我的Rust程序会很慢。
但是,如果我使用经常引用的--release
标志,则它不起作用。如果旗帜甚至不存在,每个人都在谈论什么?
$ rustc --release foo.rs
error: Unrecognized option: 'release'.
答案 0 :(得分:5)
你犯了一个简单的错误: --release
标志是cargo
的标志。使用rustc
开启优化的最简单方法是使用-O
标记。
您可以使用各种级别的优化来编译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
(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中找到有关配置文件和默认值的更多信息。