UbuntuにEmscriptenをインストール
Emscripten
- 公式サイト: https://emscripten.org/
Git をインストール
sudo apt updatesudo apt install git -y
Emscripten をインストール
以下のコマンドでEmscripten
をインストールします。
git clone https://github.com/emscripten-core/emsdk.gitcd emsdk./emsdk install latest./emsdk activate latestsource ./emsdk_env.sh
echo "source \"$PWD/emsdk_env.sh\"" >> $HOME/.bash_profile
echo "source \"$PWD/emsdk_env.sh\"" >> $HOME/.zprofile
使ってみる
sample.c
という名前のファイルを作成し、以下のソースコードを記述します。
1#include <stdio.h>2
3void print_binary(const int num) {4 for (int i = sizeof(num) * 8 - 1; i >= 0; i--) {5 printf("%d", (num >> i) & 1);6 }7 printf("\n");8}9
10int main(void) {11 const int nums[] = {-1, 0, 1, 2};12 for (int i = 0; i < sizeof(nums) / sizeof(nums[0]); i++) {13 printf("Number: %3d: ", nums[i]);14 print_binary(nums[i]);15 }16 return 0;17}
sample.c
を以下のコマンドでコンパイルします。
emcc sample.c
cache:INFO: generating system asset: symbol_lists/fa6c9ed4451a325246a933ea2505f166ebdbf38d.json... (this will be cached in "$PWD/upstream/emscripten/cache/symbol_lists/fa6c9ed4451a325246a933ea2505f166ebdbf38d.json" for subsequent builds)cache:INFO: - ok
実行
a.out.js
とa.out.wasm
が生成されます。
Node.js がインストールされている場合、以下のコマンドで実行できます。
node a.out.js
Number: -1: 11111111111111111111111111111111Number: 0: 00000000000000000000000000000000Number: 1: 00000000000000000000000000000001Number: 2: 00000000000000000000000000000010
ブラウザで実行
sample.c
を以下のコマンドでコンパイルします。
emcc sample.c -o sample.html
以下のコマンドでローカルサーバーを起動します。
npx serve -p 3000
http://localhost:3000/sampleにアクセスすると、以下のような画面が表示されます。
python3 -m http.server
http://localhost:8000/sample.htmlにアクセスすると、以下のような画面が表示されます。
Docker
https://emscripten.org/docs/getting_started/downloads.html#using-the-docker-image
docker run --rm -v $(pwd):/src -u $(id -u):$(id -g) emscripten/emsdk emcc sample.c -o sample.html