読者です 読者をやめる 読者になる 読者になる

mruby を Linux Mint(Ubuntu)で使ってみる

Linux Mint 18 で確認しました。

まずはここの Download から mruby をダウンロードします。自分は「mruby Stable版 v1.2.0 Linux/Mac版」を選択しました。

解凍して適当な場所に置き、ディレクトリに入って

$ make

を実行。gcc と CRuby と Bison が必要です。Bison は入っていなければ $ sudo apt-get install bison で入りますが、僕の環境にはすでに入っていました。gcc が入っていないということはないでしょうが、なければ $ sudo apt-get install build-essential で。実行すると
mruby_build.txt · GitHub
という風にビルドされました。これでおしまいです。


mruby の Hello, World! は CRuby とはだいぶちがいます。おおよそ
Hello World · mruby/mruby Wiki · GitHub
に書いてあるようにやればいいのですが、一部(C に慣れている人(自分にあらず)には自明であろう)修正が必要です。

まず

#include <stdio.h>
#include <mruby.h>
#include <mruby/compile.h>

int main(void)
{
  mrb_state *mrb = mrb_open();
  if (!mrb) { /* handle error */ }
  puts("Executing Ruby code from C!");
  mrb_load_string(mrb, "p 'hello world!'");
  mrb_close(mrb);
  return 0;
}

のコードを例えば hello.c で保存します。それで書かれているとおりに

$ gcc -Iinclude hello.c build/host/lib/libmruby.a -lm -o hello.out

とやると

gcc: error: build/host/lib/libmruby.a: そのようなファイルやディレクトリはありません

とおこられます。なのでそれに対応して

$ gcc -Imruby/include hello.c mruby/build/host/lib/libmruby.a -lm -ohello.out

と修正、そして

$ ./hello.out
Executing Ruby code from C!
"hello world!"

とうまくいきました。


では helloworld.rb みたいな rbファイルはどうやって実行するのかなあ。ここが初心者である。mruby はバイナリにコンパイルして実行するのだよね。さて。


※追記
わかった。bin/mruby が mruby のインタプリタだから、例えば

$ ./mruby/bin/mruby helloworld.rb

とかでいいわけだ。

コンパイルは bin/mrbc で行うので、

$ ./mruby/bin/mrbc helloworld.rb

バイトコードコンパイルされ、helloworld.mrb が出来る。これを実行するには

$ ./mruby/bin/mruby -b helloworld.mrb
Hello, World!

とオプションをつけて実行すればよい。

※参考
mruby概論(2):“組み込みRuby”こと「mruby」をセットアップしてみよう (2/3) - MONOist(モノイスト)
mrubyをとりあえず動かしてみただけ - ねこのて