在发布模式下使用rustc进行编译时,“无法识别的选项'释放'”

时间:2017-08-09 14:06:16

标签: rust

我有一个简单的.rs文件,想要使用rustc进行编译。我总是听说在发布模式下编译是多么重要,因为否则我的Rust程序会很慢。

但是,如果我使用经常引用的--release标志,则它不起作用。如果旗帜甚至不存在,每个人都在谈论什么?

$ rustc --release foo.rs
error: Unrecognized option: 'release'.

1 个答案:

答案 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-leveldebuginfo的值:

$ 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中找到有关配置文件和默认值的更多信息。