即使 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 认识到引号中的“=”不适用于环境变量吗?
非常感谢。