2017-12-10 6 views
1

ich eine einfache Rust App aufgebaut haben, wie folgt:„Fehler beim Laden des Zielspezifikation“, wenn ein Webassembly Modul mit Cargo-Gebäude

cargo new hello_world --bin 

ich Webassembly mit dem Rost-Compiler können wie folgt:

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

würde ich mag Cargo nutzen externe Abhängigkeiten zu verwalten, aber wenn ich für das gleiche Ziel bauen cargo mit:

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

Es schlägt fehl, wie folgt:

$ 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 

Antwort

1

Da das wasm32-unknown-unknown Ziel wird erst vor kurzem nach Rust hinzugefügt worden ist, ist es nur in der nächtlichen Werkzeugkette zur Verfügung. Sie müssen angeben, dass Sie die nächtliche Toolchain verwenden möchten:

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

Sie waren bereits dies zu tun, wenn rustc direkt anrufen:

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

Es ist wahrscheinlich einfacher, wenn Sie:

  1. Verwenden Sie eine Toolchain überschreiben in Ihrem Profi ject Verzeichnis:

    $ rustup override set nightly 
    
  2. ein Standardziel in Ihrem Projekt Set .cargo/config:

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

Dann können Sie einfach cargo build --release. (Es wird empfohlen, den Debug-Modus vorerst zu vermeiden).