静态地将ruby库链接到c++应用程序

Statically link ruby libraries to c++ application

本文关键字:c++ 应用程序 链接 ruby 静态      更新时间:2023-10-16

我最近问了一个关于在c++应用程序中嵌入ruby的问题

在c++中嵌入ruby,ruby库的问题

现在我遇到了另一个与此相关的问题。我设法编译并运行了这个应用程序,但我无法静态链接ruby。这就是我的控制台所说的:

####:~/Desktop/rubyParser$ g++ -o ruby_test ruby_test.c -I/usr/lib/ruby/1.8/x86_64-linux/ -static -lruby1.8
/usr/bin/ld: cannot find -lruby1.8

但是,如果我打开/usr/bin,就会有一个"ruby1.8"文件(没有扩展名)。也许我需要另一份文件。。我正在使用Ubuntu,当然我不是Linux专家,所以请耐心等待:)

我该怎么修?

提前感谢

再见

通过指定-lruby1.8,链接器将在标准库位置(可能是/usr/lib//usr/local/lib)中查找名为libruby1.8.so的文件。

看看那些目录,看看里面是否有类似的东西。

如果没有,您是否安装了ruby的开发包?如果只有链接过程失败,我认为你已经失败了(否则,你很可能也没有标题)。

我从未链接过ruby,但您是否尝试过指定-lruby而不是-lruby1.8

您是否尝试将二进制文件添加到PATH中?

如果您最近安装了有问题的Ruby库,您可能需要转到命令行并键入sudo ldconfig,以使用库的最新版本及其位置刷新ld的配置文件。

编辑:从下面的评论中,如果你遇到运行时链接问题,你只需要完成这一步,而目前还没有。但这至少是需要记住的,因为它在过去为我解决了运行时链接问题(即,帮助我使用GMP)。