注意:現在はEmscriptenを利用しなくてもwasmへのコンパイルができます。

Rust は 1.14 から WebAssembly(以下、WASM) へコンパイルできるようになりました。(c.f. Rust 1.14 のリリースに関するアナウンス)

以前のバージョンでは、WASMへの出力にはRustコンパイラに加えて、Emscriptenも必要でした。ただ、現在はstable版のRustコンパイラのターゲットアーキテクチャにWASMを追加することで、RustからWebAssemblyを出力できます。

必要なソフトウェア

    • rustup:Rust コンパイラのバージョン管理ツール

 

    rustc / Cargo:Rust コンパイラ / パッケージ管理ツール

これだけのソフトウェアをインストールします。

Rust コンパイラのインストール

rustup を利用して Rust コンパイラをインストールします。詳細はrustup で Rust コンパイラを簡単インストール を参照してください。

% curl https://sh.rustup.rs -sSf | sh
% source ~/.cargo/env

Rust にターゲットアーキテクチャを追加

rustup はコンパイラをインストールする以外に、ターゲットアーキテクチャの管理も行えます。WASM をコンパイルするためには、wasm32-unknown-emscripten というアーキテクチャを追加します。追加は次のように行います。

% rustup target add wasm32-unknown-unknown

Rust から WASM 出力

以上で準備は終了です。では実際に WASM を出力してみましょう。まず cargo コマンドで hello world を作成します。

% cargo new --bin hello
% cd hello

つぎにビルドをします。target オプションを使ってwasm32-unknown-unknownをターゲットアーキテクチャに指定し、ビルドします。

% cargo build --target=wasm32-unknown-unknown

ビルドされたバイナリーは、target/wasm32-unknown-unknown/debug 以下に出力されます。

% ls target/wasm32-unknown-unknown/debug
build           examples        hello-world.wasm    native
deps            hello-world.d       incremental

まとめ

wasm32-unknown-unknownをターゲットアーキテクチャに追加するのがポイントでした。–releaseオプションをつけてビルドすることで、最適化されたバイナリが出力されます。

广告
将在 10 秒后关闭
bannerAds