はじめに
mrubyについて2ヶ月触ってなかったらきれいさっぱり忘れていたので、ここでメモがてら記録を残してみることにします。
環境
- mruby 1.2.0
- OSX 10.11.6 El Capitan
ビルド
mruby 1.2.0をGitHubからダウンロードして、展開します。
[~/work]$ wget https://github.com/mruby/mruby/archive/1.2.0.zip
--2017-01-12 22:30:54-- https://github.com/mruby/mruby/archive/1.2.0.zip
Resolving github.com... 192.30.253.113, 192.30.253.112
Connecting to github.com|192.30.253.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/mruby/mruby/zip/1.2.0 [following]
--2017-01-12 22:30:55-- https://codeload.github.com/mruby/mruby/zip/1.2.0
Resolving codeload.github.com... 192.30.253.121, 192.30.253.120
Connecting to codeload.github.com|192.30.253.121|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 501087 (489K) [application/zip]
Saving to: ‘1.2.0.zip’
1.2.0.zip 100%[==================================>] 489.34K 96.6KB/s in 6.0s
2017-01-12 22:31:02 (82.0 KB/s) - ‘1.2.0.zip’ saved [501087/501087]
[~/work]$
[~/work]$ mv 1.2.0.zip mruby-1.2.0.zip
[~/work]$ unzip mruby-1.2.0.zip
Archive: mruby-1.2.0.zip
22464fe5a0a10f2b077eaba109ce1e912e4a77de
creating: mruby-1.2.0/
inflating: mruby-1.2.0/.gitignore
inflating: mruby-1.2.0/.travis.yml
inflating: mruby-1.2.0/.yardopts
inflating: mruby-1.2.0/AUTHORS
inflating: mruby-1.2.0/CONTRIBUTING.md
inflating: mruby-1.2.0/ChangeLog
(省略)
inflating: mruby-1.2.0/test/t/typeerror.rb
inflating: mruby-1.2.0/test/t/unicode.rb
inflating: mruby-1.2.0/travis_config.rb
[~/work]$ cd mruby-1.2.0
[~/work/mruby-1.2.0]$
その後、minirakeコマンドを実行するとビルドが行われます。
[~/work/mruby-1.2.0]$ ./minirake
(in /Users/miyohide/work/mruby-1.2.0)
CC src/array.c -> build/host/src/array.o
CC src/backtrace.c -> build/host/src/backtrace.o
CC src/class.c -> build/host/src/class.o
CC src/codedump.c -> build/host/src/codedump.o
CC src/compar.c -> build/host/src/compar.o
CC src/crc.c -> build/host/src/crc.o
CC src/debug.c -> build/host/src/debug.o
(省略)
mruby-random - Random class
mruby-object-ext - Object class extension
mruby-objectspace - ObjectSpace class
mruby-fiber - Fiber class
mruby-enumerator - Enumerator class
mruby-enum-lazy - Enumerable::Lazy class
mruby-toplevel-ext - toplevel object (main) methods extension
mruby-compiler - mruby compiler library
mruby-bin-mirb - mirb command
- Binaries: mirb
mruby-bin-mruby - mruby command
- Binaries: mruby
mruby-bin-strip - irep dump debug section remover command
- Binaries: mruby-strip
mruby-kernel-ext - Kernel module extension
mruby-test - mruby test
================================================
[~/work/mruby-1.2.0]$
作られたバイナリはbinディレクトリに作成されます。試しにmrubyのバージョンを出力してみます。
[~/work/mruby-1.2.0]$ ./bin/mruby --version
mruby 1.2.0 (2015-11-17)
[~/work/mruby-1.2.0]$
定番ですが、Hello Worldを出力してみます。
まずはソースです。mrubyはRubyと文法が同じなので、Hello Worldは次のようにかけます。
p 'Hello mruby World.'
これを実行します。mrubyコマンドを使ってファイル名を指定することで実行できます。
[~/work/mruby-1.2.0]$ cat hello_world.rb
p 'Hello mruby World.'
[~/work/mruby-1.2.0]$[~/work/mruby-1.2.0]$ ./bin/mruby hello_world.rb
"Hello mruby World."
mrubyはソースをコンパイルすることができます。コンパイルするにはmrbcコマンドを使います。
[~/work/mruby-1.2.0]$ ./bin/mrbc hello_world.rb
[~/work/mruby-1.2.0]$ ls -l hello_world.*
-rw-r--r-- 1 miyohide staff 105 1 12 22:51 hello_world.mrb
-rw-r--r-- 1 miyohide staff 24 1 12 22:47 hello_world.rb
[~/work/mruby-1.2.0]$
作成されたバイナリ(hello_world.mrb)を実行するには、mrubyコマンドに-bオプションを付けます。
[~/work/mruby-1.2.0]$ ./bin/mruby -b hello_world.mrb
"Hello mruby World."
[~/work/mruby-1.2.0]$