在Ruby中使用外部库

时间:2011-03-12 15:20:59

标签: ruby

我编译了一个用C / C ++编写的带有Ruby绑定的库(GDAL)。

运行make install后,它安装在

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0/

有一个名为“gdal”的目录,里面有4个文件:gdal.so,gdalconst.so,ogr.so,osr.so

我现在想要的是在我的项目中使用这些库。问题在于,当我尝试引用这些文件时

  

需要'gdal / gdal'

我得到了

  

LoadError:没有要加载的文件 -   gdal / gdal来自   :29:在   require' from <internal:lib/rubygems/custom_require>:29:in 需要'from(irb):1来自   /Users/igor/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in   `'

当我运行ruby -e 'puts $:'时,我得到以下输出:

  

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1

     

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0

为什么它对我不起作用的任何想法?

3 个答案:

答案 0 :(得分:1)

make installOS X之后,您的路径.bundle中应该有/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0个文件。

如果你想使用它,你只需要require 'gdal',它应该没问题。

答案 1 :(得分:1)

看起来您没有使用extconf.rb文件来帮助您生成makefile。 如果要编写C ++扩展,可能需要阅读此tutorial并检查Rice。 (Ruby是用C语言编写的,你需要公开一个C API,Rice使这更容易)。

答案 2 :(得分:0)

谢谢你们的建议。我终于找到了问题所在。似乎我使用rvm管理ruby版本的事实导致了这个问题。一旦我切换到系统默认值(rvm use system),一切都很顺利。