rust - "Unrecognized option ' 在 Release模式下使用 rustc 编译时发布 '"

标签 rust

我有一个简单的 .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(或任何其他级别)进行编译。然而,这并不总是必要的。通常,您可以使用 -Orustc --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-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 中使用的默认值的更多信息.

关于rust - "Unrecognized option ' 在 Release模式下使用 rustc 编译时发布 '",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45593026/

相关文章:

rust - 内存布局、对齐和释放

rust - 尝试使用 dyn AsyncReadExt, "the trait cannot be made into an object"错误

python - 使用环验证 ECDSA 签名时出现“未指定”错误

generics - 如何使用 Float 特性访问数字常量?

opengl - Rust 和 OpenGL 设置

python - 如何在 PyO3 中实现 python 运算符

windows - 由于 SSL 连接错误,Cargo 无法下载文件

postgresql - 如何将类似 C 的枚举与柴油一起使用

http - 如何从 Rust 发出 HTTP 请求?

rust - 如何卸载通过 rustup 安装的 Rust?