将Ruby解释器链接到C程序中

问题描述 投票:0回答:1

我正在尝试将Ruby解释器包含在C程序中。我一直在使用此链接作为指南:https://silverhammermba.github.io/emberb/embed/#startup-teardown

我在C中有以下代码:

#include <ruby.h>

int main(int argc, char* argv[])
{
    /* construct the VM */
    ruby_init();

    // puts "hola"
    /* Ruby goes here */

    /* destruct the VM */
    return ruby_cleanup(0);
}

问题是,当我尝试编译代码时,收到以下消息:

ruby_init的引用未定义

ruby_cleanup的引用未定义

c ruby api interpreter
1个回答
1
投票

您需要与libruby链接,如链接中所述:

嵌入Ruby需要一个标头ruby.h,其中包括特定于平台的标头ruby/config.h。您可能需要告知编译器这些标头的包含路径。您还需要链接Ruby lib。在我的机器上,最小的编译器选项是

$ gcc -I/usr/include/ruby-2.5.0 -I/usr/include/ruby-2.5.0/x86_64-linux -lruby

尽管,如果可用,您应该真正使用pkg-config来获取适当的分发选项:

$ pkg-config --cflags --libs ruby-2.5

将这两个结合起来,得到gcc $(pkg-config --cflags --libs ruby-2.5) <files> <libs>

© www.soinside.com 2019 - 2024. All rights reserved.