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

时间:2011-05-25 12:19:14

标签: c++ ruby

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

Embedding ruby in c++, problem with ruby libraries

现在我遇到了另一个与此相关的问题。我设法编译并运行此应用程序,但我无法静态链接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专家,所以请耐心等待我:)

我该如何解决?

提前致谢

再见

3 个答案:

答案 0 :(得分:2)

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

看看这些目录,看看你是否有类似的东西。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您最近安装了相关的Ruby库,则可能需要转到命令行并键入sudo ldconfig以刷新ld的配置文件,其中包含最新版本的你的图书馆和他们的位置。

编辑:从下面的评论中,如果遇到运行时链接问题,您只需要执行此步骤,此时您还没有。但至少要记住一点,因为它在过去解决了我的运行时连接问题(即帮助我使用GMP)。