mruby 中的最小静态编译
Minimal static compilation in mruby
我有一个简单的例子:
#include "mruby.h"
#include <mruby/compile.h>
int main()
{
mrb_int i;
mrb_value c;
mrb_state *mrb = mrb_open();
char kod[] = "def suma(a,b) (a+b).to_i end";
if (!mrb) { /* problemy */ }
mrb_load_string(mrb, kod);
for(i=0; i<9; i++)
{
c = mrb_funcall(mrb, mrb_top_self(mrb), "suma", 2,
mrb_fixnum_value(i), mrb_fixnum_value(i));
}
mrb_close(mrb);
return 0;
}
如何在静态模式下编译它,没有库libmruby.a
?
我只想添加 /src/*.c
个文件。
我不需要Array
。没有文件访问权限,没有其他 gems(time
、test
、sprintf
、random
等)
哪些文件很重要,哪些可以忽略?
我不需要 gem 编译器。如果可能的话,我只能 运行 字节码。
我该怎么做?
您必须在 mruby 源目录中 运行 rake。您将在 build/host/lib 目录中生成 libmruby.a。 (在特定架构中)
接下来使用 -I 选项 编译程序,然后 link 使用 -lmruby 指定给 link呃.
不可能像lua
那样制作普通静态
我有一个简单的例子:
#include "mruby.h"
#include <mruby/compile.h>
int main()
{
mrb_int i;
mrb_value c;
mrb_state *mrb = mrb_open();
char kod[] = "def suma(a,b) (a+b).to_i end";
if (!mrb) { /* problemy */ }
mrb_load_string(mrb, kod);
for(i=0; i<9; i++)
{
c = mrb_funcall(mrb, mrb_top_self(mrb), "suma", 2,
mrb_fixnum_value(i), mrb_fixnum_value(i));
}
mrb_close(mrb);
return 0;
}
如何在静态模式下编译它,没有库libmruby.a
?
我只想添加 /src/*.c
个文件。
我不需要Array
。没有文件访问权限,没有其他 gems(time
、test
、sprintf
、random
等)
哪些文件很重要,哪些可以忽略? 我不需要 gem 编译器。如果可能的话,我只能 运行 字节码。
我该怎么做?
您必须在 mruby 源目录中 运行 rake。您将在 build/host/lib 目录中生成 libmruby.a。 (在特定架构中)
接下来使用 -I 选项 编译程序,然后 link 使用 -lmruby 指定给 link呃.
不可能像lua
那样制作普通静态