Comment comstackr un exemple mruby?

Entendre parler de mruby m’a inspiré à commencer à apprendre la programmation en C. J’ai suivi quelques tutoriels en ligne, je comprends donc les bases, mais j’aimerais maintenant commencer à jouer avec mruby en compilant un exemple d’application. Je comprends comment comstackr un seul fichier C, mais je ne sais pas trop comment comstackr mruby avec mon propre code.

J’utilise GCC sur Mac OS X 10.8.

En utilisant cet exemple:

#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_ssortingng(mrb, code); return 0; } 

Et en exécutant cette commande:

 gcc example.c 

J’ai évidemment l’erreur

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

J’ai cloné le repository git et créé un lien symbolique vers le répertoire include, mais je suis sûr que je me trompe.

Comment dois-je inclure mruby dans mon code afin que tout soit compilé ensemble?

Mise à jour: Voici la structure de répertoire de ce que j’ai, notez le lien symbolique vers le répertoire d’inclusion de mruby:

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

Quand je comstack en incluant le répertoire:

 gcc example.c -I include/mruby 

Je reçois les erreurs suivantes:

 Undefined symbols for architecture x86_64: "_mrb_load_ssortingng", 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 

Mise à jour: j’ai suivi les instructions du fichier mruby/INSTALL (qui, en gros, vient d’être lancé, exécutez make dans le répertoire racine du projet mruby). Cela a ajouté un tas de répertoires et de champs dans le mruby/build/host , y compris le fichier lib/libmruby.a . J’ai pu comstackr l’exemple de script en incluant ce fichier lors de la compilation.

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

Maintenant je lance mon application:

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

Au lieu de

 #include  #include  

Essayer

 #include "mruby.h" #include "mruby/comstack.h" 

Faites-moi savoir si cela fait une différence. Le compilateur utilise différents chemins de recherche pour les inclusions avec <> et “”. “” sont locaux.

Vous pouvez aussi essayer

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