Как скомпилировать пример mruby?

Услышав о mruby , я вдохновил меня на то, чтобы начать изучение программирования на C. Я проработал несколько учебников в Интернете, поэтому я понимаю основы, но теперь я хотел бы начать играть с mruby, составив пример приложения. Я понимаю, как скомпилировать один файл C, но я застрял в попытке выяснить, как скомпилировать mruby вместе со своим собственным кодом.

Я использую GCC в Mac OS X 10.8.

Используя этот пример:

#include  #include  #include  #include  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; } 

И запустив эту команду:

 gcc example.c 

Я, очевидно, получаю сообщение об ошибке:

 engine.c:4:19: error: mruby.h: No such file or directory 

Я клонировал git repo и создал символическую ссылку в каталог include, но я уверен, что делаю это неправильно.

Как включить mruby в свой код, чтобы все было скомпилировано?

Обновление: вот структура каталогов того, что у меня есть, обратите внимание на символическую ссылку на каталог include mruby:

 $ tree -l . . ├── example.c └── include └── mruby -> ../../mruby/include ├── mrbconf.h ├── mruby │  ├── array.h │  ├── class.h │  ├── compile.h │  ├── data.h │  ├── debug.h │  ├── dump.h │  ├── gc.h │  ├── hash.h │  ├── irep.h │  ├── khash.h │  ├── numeric.h │  ├── proc.h │  ├── range.h │  ├── string.h │  ├── value.h │  └── variable.h └── mruby.h 

Когда я компилирую, включив каталог:

 gcc example.c -I include/mruby 

Я получаю следующие ошибки:

 Undefined symbols for architecture x86_64: "_mrb_load_string", referenced from: _main in ccd8XYkm.o "_mrb_open", referenced from: _main in ccd8XYkm.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 

Обновление: я выполнил инструкции в mruby/INSTALL (который в основном только что запустил make в корневом каталоге проекта mruby). Это добавило кучу каталогов и полей в mruby/build/host , включая файл lib/libmruby.a . Я смог скомпилировать сценарий примера, включив этот файл при компиляции.

 gcc -Iinclude/mruby example.c ../mruby/build/host/lib/libmruby.a 

Теперь я запускаю свое приложение:

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

Вместо

 #include  #include  

Пытаться

 #include "mruby.h" #include "mruby/compile.h" 

Дайте мне знать, если это имеет значение. Компилятор использует разные пути поиска для include с <> и “”. “” являются локальными.

Вы также можете попробовать

 gcc -Ipath/to/ruby/include/dir example.c