BLOGTIMES
2017/06/25

Emscripten を CentOS 7 で試す

  c  cpp  javascript  centos7 
このエントリーをはてなブックマークに追加

Emscripten という C/C++ を JavaScript に変換できる LLVM のバックエンドを CentOS 7 で動かしてみました。
名前だけは聞いたことがあったのですが、これまできちんと動かしてみたことがなかったのでした。

Emscripten

Emscripten is an LLVM-based project that compiles C and C++ into highly-optimizable JavaScript in asm.js format. This lets you run C and C on the web at near-native speed, without plugins.

CentOS だとセットアップが面倒?

あまり CentOS で使っている人はいないようで、セットアップにちょっと苦労しました。
最新版のバイナリビルドは clang が glibc が古いというエラーを吐くので、仕方なく clang はソースからビルドしました。

# 必要なツールのインストール yum install -y epel-release yum install -y cmake3 nodejs npm java-1.8.0-openjdk java-1.8.0-openjdk-devel # cmake3 をデフォルトにする ln -s /usr/bin/cmake3 /usr/local/bin/cmake # emsdk のダウンロードと展開 cd /opt wget https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz tar zxvf emsdk-portable.tar.gz cd emsdk-portable # 最新版のバイナリビルドをインストール ./emsdk install latest ./emsdk activate latest # clang の最新版をソースからビルド(かなり時間がかかります) ./emsdk install clang-incoming-64bit ./emsdk activate clang-incoming-64bit # 環境変数を設定 . emsdk_env.sh

環境変数の設定の部分の . emsdk_env.sh はログインする度に実行する必要があります。

HelloWorld してみる

例えば以下のような簡単な C のプログラムを用意しておきます。
helloworld.c

#include <stdio.h> int main(int argc, char *args[]){ printf("Hello, World!"); return 0; }

これを cc や gcc の代わりに emcc を使ってコンパイルします。
emcc は JavaScript を吐くコンパイラになっているので、-o の拡張子は .js にしておきます。
出力された js は nodejs を使って実行することができます。

$ emcc -O2 -o helloworld.js helloworld.c $ node helloworld.js Hello, World!

また、-o の拡張子を .html にするとブラウザ実行するための html を同時に生成させることもできます。

$ emcc -O2 -o helloworld.js helloworld.html

以下のページを開くと、実際にブラウザで Hello, World! が表示されるのが分かると思います。

確かにこれはいろいろ使えそうですね。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9428
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン