ffi无法在MacOS 10.8.5上通过bundler构建

时间:2014-05-12 03:53:32

标签: ruby-on-rails bundler ffi

问题: bundler无法构建ffi,因此我的rails应用程序在我的开发环境中被破坏了。 我读过的所有帖子都没有适合我的解决方案。我在许多rails应用程序中遇到了同样的错误。

我可以采取哪些其他问题排查步骤? 我该如何解决这个问题?

背景 从Snow Leopard升级到Mountain Lion后,Xcode升级,Clean Homebrew安装,我做了一个干净安装的rvm。现在我正在尝试重新创建我的rails应用程序使用的gemsets。我做了:

gem install rails -v3.2.16 (to get the base rails gems installed)
rvm gemset import ruby-1.9.3-p545@CLIENTNAME.gems (to import gems)
bundle install (to install dependencies and resync gemfile.lock)

ISSUE: 捆绑安装失败,并显示以下错误消息:

An error occurred while installing ffi (1.9.3), and Bundler cannot continue.
Make sure that gem install ffi -v '1.9.3' succeeds before bundling.

完整的gem_make.out在这里:https://gist.github.com/mattmartini/b2f8ad3b4e6c57325d38

mkmf.log在这里:https://gist.github.com/mattmartini/d3256cb52e5eafb2346b

config.log在这里:https://gist.github.com/mattmartini/69407e118e92cadda2b0

我想继续使用ruby 1.9.3,因为生产服务器正在使用它。

意见: 抛出的错误之一是' C编译器无法创建可执行文件' - 这不是真的。我可以编译C程序和捆绑器构建的nokogiri没有问题。

我刚刚注意到rvm安装的libffi(以及gcc46)只是keg。 Bundler能否在创建gem时使用lib?

环境:

Mac OS X 10.8.5 (Mountain Lion)
Xcode 5.0.2 (command line tools installed)
Homebrew 0.9.5 (recent fresh install)
rvm 1.25.25 (stable)
ruby 1.9.3-p545
libffi 3.0.13 (brew via rvm)
gcc46 (brew via rvm)

浏览: 我回顾了一些类似问题的帖子,但没有一个有适合我的解决方案,包括:

https://github.com/ffi/ffi/issues/286

注意我这里有一堆堆栈溢出链接,但我无法向他们提交此问题。

1 个答案:

答案 0 :(得分:1)

我对libffi只是桶的预感是正确的。在链接libffi之后,bundle使用了这个lib而不是尝试编译它。这解决了安装gem的问题,但无法解决无法编译的原因。

由于lib只是keg,你必须强制它链接:

brew link libffi --force