C言語のプログラムをWebブラウザやNode.jsで実行する
Emscriptenを使います。Emscriptenとは、C言語のコードからLLVMのバイナリを生成してJavaScriptのコードを出力するプログラムです。C言語のプラグラムのコードがあればJavaScriptのコードに変換して、WebブラウザやNode.jsで動かす事が可能です。
Emscripten is an LLVM to JavaScript compiler. It takes LLVM bitcode (which can be generated from C/C++ using Clang, or any other language that can be converted into LLVM bitcode) and compiles that into JavaScript, which can be run on the web (or anywhere else JavaScript can run).
セットアップ
参考 :
Tutorial - kripken/emscripten Wiki
C++のコードをブラウザ実行可能なJavaScriptに変換するEmscripten導入メモ
前提
以下がインストールされているものとします。環境はOSX 10.8系です。
- Node.js
- Python 2.x
LLVMのインストール
brew install llvm --with-clang
Emscriptenのダウンロード
git clone https://github.com/kripken/emscripten.git
Emscriptenの環境設定
初回のみ以下を実行します。自動的に設定ファイル
~/.emscripten
を生成してくれます。[emscriptenのDir]/em++
Cのコードを作成
test.c
として保存#include <stdio.h> int main(){ printf("Hello World"); return 0; }
※見やすさを優先するため、これ以降em++にPATHが通っていて、Cのコードのディレクトリにいるものとします。
JavaScriptコードを生成してNode.jsで実行
JavaScriptのコードを生成します。ファイル名は標準の場合
a.out.js
で、2500行くらいあります。 em++ test.cNode.jsで実行します。
node a.out.js
実行結果
Hello World
HTML+JavaScriptを生成してWebブラウザで実行
HTMLファイルを生成
em++ -o test.html test.c
ブラウザで開きます。