我编译了一个用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
为什么它对我不起作用的任何想法?
答案 0 :(得分:1)
在make install
上OS 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
),一切都很顺利。