在OSX Mountain Lion上运行gem install ffi会产生以下错误。
gem install ffi
Building native extensions. This could take a while...
ERROR: Error installing ffi:
ERROR: Failed to build gem native extension.
/beweiche.rvm/rubies/ruby-1.9.3-p374/bin/ruby extconf.rb
/beweiche.rvm/rubies/ruby-1.9.3-p374/bin/ruby: invalid option -H (-h will show valid options) (RuntimeError)
Gem files will remain installed in /beweiche.rvm/gems/ruby-1.9.3-p374@hugo/gems/ffi-1.8.1 for inspection.
任何原生扩展都会发生这种情况。 使用系统ruby(1.8.7)我可以安装带有原生扩展的gem。它甚至适用于1.9.3。但是在安装了“宝石更新”后,我陷入了困境。
在我的机器上安装了宝石:
bundler (1.2.3)
coderay (1.0.9)
diff-lcs (1.2.4)
graph (2.5.2)
method_source (0.8.1)
pry (0.9.12.1)
rake (10.0.3)
rspec (2.13.0)
rspec-core (2.13.1)
rspec-expectations (2.13.0)
rspec-mocks (2.13.1)
rubygems-bundler (1.1.0)
rvm (1.11.3.6)
slop (3.4.4)
这似乎是一个愚蠢的错字,但我找不到。
任何提示都受到高度赞赏。
同时,我在我的rvm中安装了ruby 2.0.0-rc1。使用此设置,我可以安装具有本机扩展名的gem。我将宝石升级到1.9.3中的相同版本,因为它们在2.0.0中,但问题仍然存在。
答案 0 :(得分:0)
您使用homebrew
吗?如果是,请在运行brew install libffi
之前尝试通过bundle
安装ffi。
你为什么要跑gem update installed
?您应该让Bundler为您处理更新:bundle
或bundle update gem_xyz
。如果你想添加一个新的gem,只需将它添加到Gemfile。
我假设当您更新所有宝石时,其中一个已更新为依赖于FFI。您可以在ffi
中搜索Gemfile.lock
来验证这一点。一旦你看到哪个gem依赖它,你就决定是否将这个gem修复到Gemfile中的早期版本,并完全消除依赖,或者继续安装lib。