【问题标题】:"Error loading target specification" when building a WebAssembly module with Cargo使用 Cargo 构建 WebAssembly 模块时出现“加载目标规范时出错”
【发布时间】:2017-12-10 21:35:08
【问题描述】:

我构建了一个简单的 Rust 应用程序如下:

cargo new hello_world --bin

我可以使用 Rust 编译器编译成 WebAssembly,如下所示:

rustc +nightly --target wasm32-unknown-unknown -O src/main.rs

我想使用 Cargo 来管理外部依赖项,但是当我使用 cargo 为同一目标构建时:

cargo build --release --target wasm32-unknown-unknown

失败如下:

$ cargo build --release --target wasm32-unknown-unknown
error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names --target wasm32-unknown-unknown --crate-type bin --crate-type rlib` (exit code: 101)
--- stderr
error: Error loading target specification: Could not find specification for target "wasm32-unknown-unknown"
  |
  = help: Use `--print target-list` for a list of built-in targets

【问题讨论】:

    标签: rust webassembly


    【解决方案1】:

    由于 wasm32-unknown-unknown 目标最近才被添加到 Rust,它只在 nightly 工具链中可用。您必须指定您希望使用 nightly 工具链:

    cargo +nightly build --release --target wasm32-unknown-unknown
    #     ^^^^^^^^
    

    在直接调用rustc 时,您已经这样做了:

    rustc +nightly --target wasm32-unknown-unknown -O src/main.rs
    #     ^^^^^^^^
    

    如果你这样做可能会更容易:

    1. 在您的项目目录中使用工具链覆盖

      $ rustup override set nightly
      
    2. 在项目的.cargo/config 中设置默认目标:

      [build]
      target = "wasm32-unknown-unknown"
      

    那么你可以cargo build --release。 (建议暂时避免调试模式)。

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2015-03-28
      • 2018-01-21
      • 1970-01-01
      相关资源
      最近更新 更多