日記

内容の正しさは保証しません

emscriptenをインストールしてwebassemblyを実行するまで

環境

pythonのインストール

pacman -S mingw-w64-x86_64-python

でインストールできる。次に

python

を叩くとWindows Storeが開くと思うので、環境変数の順番を入れ替えて直す。

emscriptenのインストール

コマンドは公式サイト1に書いてある。まずmsys2で

cd <任意のディレクトリ>
git clone https://github.com/emscripten-core/emsdk.git

によりemscriptenをダウンロードする。次にcmd.exeで

cd <任意のディレクトリ>/emsdk
emsdk install latest
emsdk activate latest
emsdk_env.bat

を実行する。しかし4行目のemsdk_env.batを実行しても環境変数が追加されなかった。なので追加したとされる(されてない)パス

<任意のディレクトリ>\emsdk
<任意のディレクトリ>\upstream\emscripten
<任意のディレクトリ>\emsdk\node\14.18.2_64bit\bin

を追加する。14.18.2は適当に書き換える。

webassemblyにコンパイルして実行

適当にソース書いて

em++ -s WASM=1 -o <任意の名前>.html <ソース>.cpp

コンパイルした。実行ファイル(みたいなやつ)は.htmlになるが、開いてもCORSのエラーで動かない。 そこでAtomをインストールしてatom-live-serverを入れて.htmlがあるディレクトリでサーバを起動し実行した。

コンパイルのオプション2

  • -s WASM=1は必須
  • -o *.htmlはwebassemblyを呼び出すコードの記述を省略するなら必須
  • その他、clangで動くオプションはそのまま使える?例:-std=c++20, -Wall
    • -std=c++20については、つけないとコンパイルエラーになるコードで確認した

em++ -vの結果

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.10 (c3fe57af0504fe24fc4ba697feb8c204f3c80022)
clang version 15.0.0 (https://github.com/llvm/llvm-project 8bc29d14273b05b05d5a56e34c07948dc2c770d3)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: <任意のディレクトリ>\emsdk\upstream\bin