簡體   English   中英

如何編寫一個mruby示例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM