mrubyをビルドしたり、使ったり。
RubyをLuaのようにプログラムに組み込んだりできるmrubyというものがあります。
githubで公開されています。https://github.com/mruby/mruby/
今回はふと思いつきこれを試してみることにしました。
メモも兼ねて手順を書いておきます。
ビルドは簡単です。時間もあまりかかりません。
ビルドするよ!
まず、このコマンドでソースコードをgithubから取ってきまます。
git clone https://github.com/mruby/mruby.git
次に、mrubyディレクトリに入ってビルドします。makeだけです。本当に簡単です。
ただし、bisonのインストールが必要です。
cd mruby
make
これでビルドは終わりです。本当にこれだけです。
irbのようなmirbでコードを試してみることもできるようです。
./bin/mirb
っと、ここで普通のRubyとの違いが一つありました。
1 / 0
の結果が「inf」になり、エラーが出ません。
自作プログラムに組み込んでみる
最初に、mrubyディレクトリから「cd ../」で元のディレクトリに戻っておきます。
「sample.c」という名前でこんなC言語のプログラムを用意します。
#include <mruby.h> #include <mruby/compile.h> #include <stdio.h> int main() { mrb_state *mrb; mrbc_context *ctx; mrb = mrb_open(); if (mrb == NULL) { printf("Error\n"); } ctx = mrbc_context_new(mrb); mrb_load_string_cxt(mrb, "puts \"Hello, world\"", ctx); mrbc_context_free(mrb, ctx); mrb_close(mrb); return 0; }
このプログラムでmrubyを呼び出します。
mrb_load_string_cxtという関数がRubyのソースコードを実行するものだと思います。
コンパイルする時は「-lm」が必要そうです。
gcc sample.c -o sample -I./mruby/include -L./mruby/lib -lmruby -lm
実行。
./sample
「Hello, world!」と表示されます。
まとめ
これでゲームとか作れたら楽しそうです。夢が広がりますね!