我正在尝试将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的引用未定义
您需要与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>
。