我最近问了一个关于在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专家,所以请耐心等待我:)
我该如何解决?
提前致谢
再见
答案 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)。