組込みRubyことmrubyをgithub公式から引っ張ってくる方法です。
相変わらず活発に更新が行われています。
以下の手法で通らないようでしたら、公式ページに飛んだ方が早いかもしれません。
インストール
例の如く、git cloneでおとしてきます。
$ git clone https://github.com/mruby/mruby.git
もしbison*1が入っていない場合はビルド前に導入します。
//debian系 $ sudo apt-get install bison //Mac OS X $ brew install bison
導入先に移動して……make。簡単ですね。
$ cd #{mruby-root} $ make
一通り終わると、次のような出力を得ます。
Build summary: ================================================ Config Name: host Output Directory: build/host Binaries: mrbc Included Gems: mruby-sprintf - 0.0.0 mruby-print - 0.0.0 mruby-math - 0.0.0 mruby-time - 0.0.0 mruby-struct - 0.0.0 mruby-enum-ext - 0.0.0 mruby-string-ext - 0.0.0 mruby-numeric-ext - 0.0.0 mruby-array-ext - 0.0.0 mruby-hash-ext - 0.0.0 mruby-range-ext - 0.0.0 mruby-proc-ext - 0.0.0 mruby-symbol-ext - 0.0.0 mruby-random - 0.0.0 mruby-object-ext - 0.0.0 mruby-objectspace - 0.0.0 mruby-fiber - 0.0.0 mruby-toplevel-ext - 0.0.0 mruby-bin-mirb - 0.0.0 - Binaries: mirb mruby-bin-mruby - 0.0.0 - Binaries: mruby ================================================
指示通りみていくと
$ ls -1 build/host LEGAL bin lib mrbgems mrblib src tools
てなフォルダが生成されています。
Hello world on C-Lang
折角なので、C言語上でHello worldいってみましょう。
次のコードをコピーして……
#include <stdlib.h> #include <stdio.h> /* Include the mruby header */ #include <mruby.h> #include <mruby/compile.h> int main(void) { mrb_state *mrb = mrb_open(); char code[] = "p 'hello world!'"; printf("Executing Ruby code from C!\n"); mrb_load_string(mrb, code); return 0; }
ヒアドキュメントとcatの合わせ技でちゃちゃっとhello.cを作ります。
$ cd #{mruby-root} $ cat > hello.c <<EOS > ##上のコードをコピペ## > EOS
終わったらコンパイルで動作確認です。
$ gcc -Iinclude hello.c build/host/lib/libmruby.a -lm -o hello.out $ ./hello.out Executing Ruby code from C! "hello world!"
次回の記事ではmrubyをC言語プロジェクトに適用する方法を扱います。