[英]How to compile an mruby example?
聽說mruby啟發了我開始學習C編程。 我已經在線閱讀了一些教程,因此我了解了基礎知識,但是現在我想通過編譯示例應用程序來開始使用mruby。 我了解如何編譯單個C文件,但是我一直試圖找出如何同時編譯mruby和我自己的代碼。
我在Mac OS X 10.8上使用GCC。
使用此示例:
#include <stdlib.h>
#include <stdio.h>
#include <mruby.h>
#include <mruby/compile.h>
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,以便將它們全部編譯在一起?
更新:這是我所擁有的目錄結構,請注意指向mruby include目錄的符號鏈接:
$ 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
文件中的說明進行操作(基本上只是說在mruby項目的根目錄中運行make)。 這在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 <mruby.h>
#include <mruby/compile.h>
嘗試
#include "mruby.h"
#include "mruby/compile.h"
讓我知道這有什么區別。 編譯器對包含<>和“”的包含使用不同的搜索路徑。 “”是本地的。
您也可以嘗試
gcc -Ipath/to/ruby/include/dir example.c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.