2

即使 ffi gem(正确的版本 1.0.11)安装得很好,我的捆绑安装也无法在我的 Mac 上安装 ffi。运行“捆绑安装”时出现以下错误:

使用本机扩展安装 ffi (1.0.11)
Gem::Installer::ExtensionBuildError: 错误: 无法构建 gem 原生扩展。
...
创建 Makefile

制作
为 i386 配置 libffi
env: --disable-static: 没有这样的文件或目录
make[1]: *** 没有指定目标,也没有找到 makefile。停止。
为 x86_64 配置 libffi
env: --disable-static: 没有这样的文件或目录
make[1]: *** 没有指定目标,也没有找到 makefile。停止。
make: *** ["/mypath/clients/myapp/rails=2.3.5/ruby/1.8/gems/ffi-1.0.11/ext/ffi_c/libffi"/.libs/libffi_convenience.a] 错误2
安装 ffi (1.0.11) 时出错,Bundler 无法继续。
在捆绑之前确保 `gem install ffi -v '1.0.11'` 成功。

我试过了

gem install ffi -v '1.0.11'
它通过就好了。然后我查看失败的 Makefile 并运行
使-n
看看发生了什么。原来make在命令上失败了:

cd "/mypath/clients/myapp/rails=2.3.5/ruby/1.8/gems/ffi-1.0.11/ext/ffi_c"/libffi-$arch && env CC="gcc" CFLAGS="-arch $arch " LDFLAGS="-arch $arch" "/mypath/clients/myapp/rails=2.3.5/ruby/1.8/gems/ffi-1.0.11/ext/ffi_c/libffi"/configure --disable-static -- with-pic=yes --disable-dependency-tracking --host=$arch-apple-darwin > /dev/null;

具体来说,它失败了

env CC=" gcc" CFLAGS="-arch $arch " LDFLAGS="-arch $arch" "/mypath/clients/myapp/rails=2.3.5/ruby/1.8/gems/ffi-1.0.11/ext/ ffi_c/libffi"/configure --disable-static --with-pic=yes --disable-dependency-tracking --host=$arch-apple-darwin > /dev/null;

显然 env 命令认为该部分

“/mypath/clients/myapp/rails=2.3.5/ruby/1.8/gems/ffi-1.0.11/ext/ffi_c/libffi”/configure
是设置一个环境变量,因为路径包含“=”。如果我手动将“=”更改为“_”,env 命令就可以正常工作。但是,这个路径是由“bundle install”自动生成的,过去一直有效。

我刚试过

捆绑安装 --path=rails_2.3.5
它通过了。但我仍然想知道过去路径 rails=2.3.5 是如何工作的。

那是因为我不小心更改了 Mac 上的某些设置吗?我可以让 env 认识到引号中的“=”不适用于环境变量吗?

非常感谢。

4

2 回答 2

2

我也遇到了这个问题,当时我清理了所有已安装的 gem,然后再次打包,它正在工作。

我不确定它是否适合您,但您仍然可以尝试。

于 2012-04-30T05:39:53.527 回答
1

我有同样的问题(Mac OS X Lion)。就我而言,升级到 Mac OS X Lion 后,我丢失了 gcc 命令行工具。

这是安装命令行工具的方法;1.安装 Xcode 4 2.Xcode -> 首选项 -> 下载选项卡 -> 命令行工具

安装后,我的情况解决了。

于 2012-05-18T23:36:23.430 回答