LoginSignup
39
19

More than 3 years have passed since last update.

Rust から WASM32 を出力するための準備

Last updated at Posted at 2017-01-22

注意:現在は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オプションをつけてビルドすることで、最適化されたバイナリが出力されます。

39
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
19