2011-05-25 59 views
2

我最近问有关在C嵌入红宝石++应用静态链接Ruby库到C++应用程序

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

你试过将二进制到PATH?

+0

如果你的意思是这样的:“g ++ -o ruby​​_test ruby​​_test.c -I/usr/lib/ruby​​/1.8/x86_64-linux/-I/usr/bin/-static -lruby1.8”,它不会改变一切。 – gisek 2011-05-25 13:53:43

+0

不,我的意思是:*出口$路径:=/yourrubypath * – Jas 2011-05-25 13:54:44

+0

什么将rubypath? /usr/lib/ruby/1.8/,这里有一些file.rb文件; /usr/lib/ruby/1.8/x86_64-linux,这里有一些file.so file.h;或者别的什么? – gisek 2011-05-25 14:42:12

2

通过指定-lruby1.8连接器会寻找一个标准库的位置(可能是/usr/lib//usr/local/lib)命名libruby1.8.so文件。

看看这些目录,看看你有没有这样的东西。

如果不是,你安装了开发包的红宝石?如果只有链接过程失败,我会认为你有(否则,很可能你不会有头文件)。

我从来没有与红宝石链接,但你有没有试过指定-lruby而不是-lruby1.8

+0

+1提的红宝石 – Jason 2011-05-25 12:24:54

+0

1的开发版本)有 “libruby1.8.so” 在/ usr/lib目录 2)发展软件包已安装 3)-lruby无法正常工作 – gisek 2011-05-25 13:49:27

+0

还有更多: libruby1.8.so - > libruby1.8.so.1.8.7; libruby1.8.so.1.8 - > libruby1.8.so.1.8.7; libruby1.8.so.1.8.7; 52 libruby1.8-static.a – gisek 2011-05-25 14:22:44

0

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

编辑:从下面的评论,你只需要做这一步,如果你遇到一个运行时链接问题,你现在还没有。但至少要记住一些事情,因为它在过去解决了运行时链接问题(即帮助我实现了GMP)。

+0

OP正在遇到**链接**问题。'ldconfig'只创建** runtime **所需的符号链接。你说得对,这可能是一个问题,但不是在这个阶段。 – ereOn 2011-05-25 12:27:54

+0

好的,谢谢澄清。 – Jason 2011-05-25 12:30:05