rvmでインストールしたmrubyを走らせてみる
概要
rvmでインストールしたmrubyを使ってみた。
いろいろ調べていると、どうも走らせ方が古い記事ばかり見つかってうまく行かなかった。
ということで、自分で調べた現状での走らせ方をメモしておく。
間違ってたり、このほうがいいよ、とかあったらぜひ教えてください。
ソース
runner.c
#include <stdio.h> #include <mruby.h> #include <mruby/dump.h> #include <mruby/string.h> #include <mruby/proc.h> int main( void ) { mrb_state *mrb = mrb_open(); FILE *fp = fopen( "test.mrb", "r" ); if ( fp == NULL ) { perror( "fopen:" ); return 1; } /* 1: read and run */ mrb_value n = mrb_load_irep_file( mrb, fp ); puts( RSTRING_PTR(mrb_any_to_s( mrb, n )) ); /* init fp */ fseek( fp, 0, SEEK_SET ); /* 2: only read */ mrb_irep *irep = mrb_read_irep_file( mrb, fp ); mrb_run( mrb, mrb_proc_new(mrb, irep), mrb_top_self(mrb) ); mrb_close( mrb ); return 0; }
test.rb
puts "Hello world!"
走らせ方
$ /home/amiq/.rvm/rubies/mruby-head/bin/mrbc test.rb #test.mrbの生成
$ cc -o runner runner.c -I/home/amiq/.rvm/src/mruby-head/include -L/home/amiq/.rvm/src/mruby-head/build/host/lib -lmruby -lm
$ ./runner
メモ
どうも
mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));
として紹介している記事がちょくちょくあるけど、これは古いやり方なのかな?
mrubyはまだ開発途中なようなので、これからじっくり見て行きたい。
あと、サンプルコードとか適当に作っていくのも楽しそうだなあなんて考えてる。