"Error loading target specification" 使用 Cargo 构建 WebAssembly 模块时
"Error loading target specification" when building a WebAssembly module with Cargo
我构建了一个简单的 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
由于 wasm32-unknown-unknown
目标最近才被添加到 Rust 中,它只在夜间工具链中可用。您必须指定您希望使用夜间工具链:
cargo +nightly build --release --target wasm32-unknown-unknown
# ^^^^^^^^
您在直接调用 rustc
时已经这样做了:
rustc +nightly --target wasm32-unknown-unknown -O src/main.rs
# ^^^^^^^^
如果您:
可能会更容易:
在您的项目目录中使用工具链覆盖:
$ rustup override set nightly
在项目的 .cargo/config
:
中设置默认目标
[build]
target = "wasm32-unknown-unknown"
那你就可以cargo build --release
了。 (建议暂时避免调试模式)。
我构建了一个简单的 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
由于 wasm32-unknown-unknown
目标最近才被添加到 Rust 中,它只在夜间工具链中可用。您必须指定您希望使用夜间工具链:
cargo +nightly build --release --target wasm32-unknown-unknown
# ^^^^^^^^
您在直接调用 rustc
时已经这样做了:
rustc +nightly --target wasm32-unknown-unknown -O src/main.rs
# ^^^^^^^^
如果您:
可能会更容易:在您的项目目录中使用工具链覆盖:
$ rustup override set nightly
在项目的
中设置默认目标.cargo/config
:[build] target = "wasm32-unknown-unknown"
那你就可以cargo build --release
了。 (建议暂时避免调试模式)。