【问题标题】:"Unrecognized option 'release'" when compiling with rustc in release mode在发布模式下使用 rustc 编译时出现“无法识别的选项‘发布’”
【发布时间】:2019-10-28 20:02:05
【问题描述】:

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

但是,如果我使用经常引用的--release 标志,它就不起作用。如果旗子都不存在,大家都在讨论什么?

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

【问题讨论】:

    标签: rust


    【解决方案1】:

    您犯了一个简单的错误:--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 是正确的选择。

    另一方面,货物的工作方式有点不同;或者至少 --release 标志可以。 Cargo 有不同的配置文件,它们决定了cargo 如何调用rustc。最重要的是dev开发-或调试-模式)和release--release 标志将默认配置文件从 dev 切换到 release(呃!)。这可能会更改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 中使用的默认值的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2018-05-23
      相关资源
      最近更新 更多