编译mruby

时间:2012-04-21 12:53:12

标签: c compilation mruby

我正在尝试编译mruby。这是我第一次从命令行编译东西。 当我在目录上运行make时,我得到了这个:

make -C mrblib --no-print-directory CC=gcc LL=gcc
make -C ../tools/mrbc --no-print-directory CC=gcc LL=gcc
gcc -Wall -Werror-implicit-function-declaration -g -MMD -I../../src -I../../src/../include -c ../../src/st.c -o ../../src/st.o
In file included from ../../src/regint.h:93,
                 from ../../src/st.c:6:
../../src/../include/mruby.h: In function ‘mrb_special_const_p’:
../../src/../include/mruby.h:100: warning: comparison is always true due to limited range of data type
../../src/st.c: In function ‘st_hash’:
../../src/st.c:1053: error: ‘SIZEOF_ST_INDEX_T’ undeclared (first use in this function)
../../src/st.c:1053: error: (Each undeclared identifier is reported only once
../../src/st.c:1053: error: for each function it appears in.)
make[2]: *** [../../src/st.o] Error 1
make[1]: *** [../bin/mrbc] Error 2
make: *** [src/mrblib/mrblib.o] Error 2

Mac OS X 10.7.3上的Buildig 我缺少一步吗? 感谢

3 个答案:

答案 0 :(得分:2)

这个问题在几个小时前就得到了解决。只需获得行李箱的新副本。

答案 1 :(得分:1)

如果这对任何人都有帮助,这里有一个如何开始使用mruby的快速教程:

作为先决条件,请确保您拥有git,C编译器和bison。你可能已经安装了这些。

克隆mruby源代码,在这种情况下,我将把它放在~/mruby中:

git clone https://github.com/mruby/mruby.git ~/mruby

在bash配置文件中,创建一个指向此目录的根目录的变量。稍后会有用。

export MRUBY_HOME=~/mruby

现在在mruby根目录中,运行make

cd $MRUBY_HOME && make

mruby现在编译了一些内容并将其放在build目录中。在那里,您将找到一个可以包含在自己的脚本中的库。

现在让我们编译一个示例脚本。将此文件命名为example.c

#include <stdlib.h>
#include <stdio.h>
#include <mruby.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;
}

要编译此脚本,我们需要指定刚刚编译的mruby库存档,并包含包含头文件的mruby include目录:

gcc example.c $MRUBY_HOME/build/host/lib/libmruby.a -I $MRUBY_HOME/include

这将创建一个名为a.out的文件。要指定特定文件名,可以传递-o选项以及应该用于编译输出的文件名。执行我们新编译的程序应该按预期显示:

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

答案 2 :(得分:0)

我让这个适用于Windows。虽然分享它,以防人们需要它:)

我用过:  Windows操作系统,  mingw编译器,  野牛(提取二进制和依赖,否则你会得到一个DLL没有找到错误)  红宝石

在PATH环境变量中设置(mindw,bison和ruby)的所有bin文件夹。

接下来,在mruby文件夹里面运行:mingw32-make.exe(这可以在你的mingw的Bin文件夹中找到)。

如果所有PATH变量都设置正确,您的代码应该编译。

现在你应该看到带有可执行文件的。\ build \ host \ bin和带有所需库的。\ build \ host \ lib。

接下来创建一个C ++程序(我使用C :: B)。

Address

@Andrew示例对我不起作用。我收到一个错误:'mrb_load_string'未在此范围内声明

我通过加入#include

来纠正错误

我希望这对于为windows设置lib非常有用!