库未加载:/opt/local/lib/libffi.5.dylib,但我正在使用homebrew。

7

我试图在Mac OS X Lion(XCode 4.3+OSX GCC Installer+Homebrew)上运行Guard。

错误信息:

Library not loaded: /opt/local/lib/libffi.5.dylib

由于我使用Homebrew而不是MacPorts,因此我没有/opt/local目录。

我尝试了brew install libffi,成功了,但宝石仍然无法正常工作。

我还尝试过卸载并重新安装宝石,但没有成功。

在安装了apple-gcc42的OSX 10.9(Mavericks)上也出现了问题。

我还尝试通过以下方式告诉gem有关libffi的存在:

gem install ffi:1.0.7 -- --with-ldflags='-L/usr/local/opt/libffi/lib'


自从升级到Mavericks以来,我遇到了类似的问题。错误信息完全相同。使用Homebrew,我已经安装了libffi,其他本地扩展宝石的安装和删除也正常进行。迄今为止,没有一个答案能解决这个问题。我不想发表新的问题,而是在这个问题上提供悬赏。 - Neil Slater
我怀疑这个问题可以通过在 gem install 时传递编译器标志来解决,以指向 brew 安装的 libffi,但我并不完全理解如何操作或者具体需要哪些标志。 - Neil Slater
希伯来语会让你的计算机混乱。 - Boris Stitnicky
1
RVM是否启用了autolibs?如果启用了,RVM将尝试通过MacPorts获取/下载软件包。 - rb512
@rb512:谢谢,这是一个好的线索。我删除了所有ffi和libffi的痕迹,在重新启动后运行了“rvm autolibs disable”,并从头开始重新安装,但不幸的是,这并没有解决问题。 - Neil Slater
5个回答

1
我在卸载MacPorts后陷入了这种情况(我以为homebrew足够了,但似乎不是)。它阻止了我的cocoapods更新/安装。
为了让它像魔法般工作,我做了以下操作:
$ sudo port install libffi

1
我认为这最好解释为Mac OS X和旧版本ffi gem之间的兼容性问题。这就是为什么在某些情况下,仅仅卸载并重新安装gem就可以解决问题。
在我的情况下,项目的Gemfile中指定了ffi版本1.0.7。在该版本上,我的测试失败并显示“Library not loaded: /opt/local/lib/libffi.5.dylib”,但如果我尝试使用最新版本1.9.3,则可以安装并且没有任何麻烦地工作。
我很幸运,因为对该项目的限制已经放置多年,并且似乎不再是必要的要求。因此,最终我选择了更晚版本的ffi gem。
我怀疑可能有一种方法可以在OS X 10.9.2上愉快地安装和使用版本1.0.7,但我不知道具体是什么。

1
我正在使用rvm,通过重新安装ffi宝石解决了这个问题。
卸载ffi宝石:
gem uninstall ffi
安装ffi宝石:
gem install ffi ##或在rails项目文件夹内运行bundle install

1

我遇到了同样的问题。最后,我尝试重新安装libffi:

brew reinstall libffi

一切都正常工作。


0

使用 otool 和 install_name_tool 工具,您可以解决依赖问题。有关详细信息,请参见创建工作 dylibs


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接