Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Ruby解释器链接到C程序_C_Ruby_Api_Interpreter - Fatal编程技术网

将Ruby解释器链接到C程序

将Ruby解释器链接到C程序,c,ruby,api,interpreter,C,Ruby,Api,Interpreter,我试图在C程序中包含Ruby解释器。我一直在使用此链接作为指南: 我有以下C代码: #包括 int main(int argc,char*argv[]) { /*构建虚拟机*/ ruby_init(); //“你好” /*鲁比在这里*/ /*破坏虚拟机*/ 返回ruby_清理(0); } 问题是,当我尝试编译代码时,我得到以下消息: 对ruby_init的引用未定义 参考ruby\u cleanup未定义您需要链接到libruby,如链接中所述: 嵌入Ruby需要一个头Ruby.h,其中包括一

我试图在C程序中包含Ruby解释器。我一直在使用此链接作为指南:

我有以下C代码:

#包括
int main(int argc,char*argv[])
{
/*构建虚拟机*/
ruby_init();
//“你好”
/*鲁比在这里*/
/*破坏虚拟机*/
返回ruby_清理(0);
}
问题是,当我尝试编译代码时,我得到以下消息:

对ruby_init的引用未定义


参考ruby\u cleanup未定义您需要链接到
libruby
,如链接中所述:

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

$ 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)

JL2210我尝试过这样做,但我得到以下消息:在pkg config搜索路径中找不到包ruby-2.5。也许您应该将包含“ruby-2.5.pc”的目录添加到PKG_CONFIG_PATH环境中variable@ErickPro您安装了什么版本的Ruby?你有安装开发包吗?我有ruby 2.5.5,我是用rvm安装的,但是我怎么知道我有没有开发包?对不起,我是Linux新手。