C言語のプログラムをWebブラウザやNode.jsで実行する

Emscriptenを使います。Emscriptenとは、C言語のコードからLLVMのバイナリを生成してJavaScriptのコードを出力するプログラムです。C言語のプラグラムのコードがあればJavaScriptのコードに変換して、WebブラウザやNode.jsで動かす事が可能です。

Emscripten

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導入メモ

  1. 前提

    以下がインストールされているものとします。環境はOSX 10.8系です。

  2. LLVMのインストール

     brew install llvm --with-clang
    
  3. Emscriptenのダウンロード

     git clone https://github.com/kripken/emscripten.git
    
  4. Emscriptenの環境設定

    初回のみ以下を実行します。自動的に設定ファイル~/.emscriptenを生成してくれます。

     [emscriptenのDir]/em++
    

    f:id:slowquery:20130608145748p:plain

Cのコードを作成

  • test.cとして保存

      #include <stdio.h>
    
      int main(){
          printf("Hello World");
          return 0;
      }
    

    ※見やすさを優先するため、これ以降em++にPATHが通っていて、Cのコードのディレクトリにいるものとします。

JavaScriptコードを生成してNode.jsで実行

  1. JavaScriptのコードを生成します。ファイル名は標準の場合a.out.jsで、2500行くらいあります。 em++ test.c

    f:id:slowquery:20130608151038p:plain

  2. Node.jsで実行します。

     node a.out.js
    
  3. 実行結果

     Hello World
    

    f:id:slowquery:20130608145817p:plain

HTML+JavaScriptを生成してWebブラウザで実行

  1. HTMLファイルを生成

     em++ -o test.html test.c
    

    f:id:slowquery:20130608150440p:plain

  2. ブラウザで開きます。

    f:id:slowquery:20130608145858p:plain