Ruby Gem安装Json在Mavericks和Xcode 5.1上失败-未知参数:'-乘法定义抑制';

Ruby Gem安装Json在Mavericks和Xcode 5.1上失败-未知参数:'-乘法定义抑制';,ruby,macos,rubygems,Ruby,Macos,Rubygems,我试图运行gem安装json,但出现以下错误 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling generat

我试图运行gem安装json,但出现以下错误

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [generator.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /opt/boxen/repo/.bundle/ruby/2.0.0/gems/json-1.8.0 for inspection.
Results logged to /opt/boxen/repo/.bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/json-1.8.0/gem_make.out
我正在使用:

OSX:10.9.2
Xcode:5.1构建版本5B130a
命令行工具(CLT):5.1.0.0.1.1393561416
Ruby:Ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13]
红宝石:2.2.2

GCC:4.2.1苹果LLVM版本5.1(clang-503.0.38)(基于LLVM 3.4svn)

在将Xcode更新到5.1之后,我遇到了完全相同的问题,来自苹果的消息并不好。发件人:

  • Xcode 5.1中的Apple LLVM编译器将无法识别的命令行选项视为错误。这个问题在构建Python本机扩展和RubyGems时就已经出现了,目前在这两个扩展中指定了一些无效的编译器选项
需要更改使用无效编译器选项的项目以删除这些选项。为了帮助简化转换,编译器将临时接受一个选项,将错误降级为警告:

-Wno error=将来未使用的命令行参数硬错误

要解决此问题,请设置ARCHFLAGS环境变量以将错误降级为警告

ARCHFLAGS=-Wno error=未来gem安装GemName时未使用的命令行参数硬错误

似乎所有违反编译器选项的gem都必须更新才能使用有效选项。明确声明:此选项[将错误降级为警告]将来将不受支持

我们看到的叮当声(这将是一个硬错误(不能降级为警告)与发行说明中宣布的更改相对应


要具体回答您的问题,请使用以下方法安装json gem:

ARCHFLAGS=-Wno error=future gem install json中未使用的命令行参数硬错误


但是,请注意,这只是一个临时修复。

Ruby已经解决了这个问题:

现在,我们只需要等待苹果将他们的ruby版本(2.0.0p247)更新为最新版本(2.0.0p451)之后的版本,该版本尚未发布。。。 (或brew/macport it)


更新(2014-05-15):Mavericks 10.9.3将ruby更新为

ruby 2.0.0p451(2014-02-24修订版45167)[universal.x86_64-darwin13]

这似乎解决了这个问题。

要解决这个问题,您可以安装最新版本的ruby,如@Sash所述。可以使用以下命令执行此操作。如果您已经安装了rvm,则无需重新安装

#Install rvm
\curl -sSL https://get.rvm.io | bash -s stable

#Install ruby version 2.0.0-p451
rvm install ruby-2.0.0-p451

#Print ruby version to verify that it was installed successfully
ruby -v

#Install json gem
sudo gem install json
一个班轮来解决这个问题

curl https://gist.githubusercontent.com/Paulche/9713531/raw/1e57fbb440d36ca5607d1739cc6151f373b234b6/gistfile1.txt | sudo patch /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb

@Muncken已经提供了一个逐个安装gem的答案:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName
根据Muncken的回答,我尝试过在使用
bundle安装时也可以使用它

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install

在我的例子中,我实际上也有类似的问题,但不是在系统ruby上,而是在rvm从OSX 10.8安装的rubies上,并且在升级到OSX 10.9后出现了问题


一个简单的重新安装工作:
rvm在OSX 10.10上重新安装ruby-2.1.1
,我在运行
rails new firstapp
时遇到了几个问题,例如:

ERROR:  Error installing json:
ERROR: Failed to build gem native extension.
fatal error: 'ruby/config.h' file not found
我用此配置更新了rvm,所有错误都消失了!:

rvm get stable --auto-dotfiles

从应用程序名可以看出,我刚刚开始摆弄RubyonRails,所以上面的建议可能对你有用,也可能对你无效

我使用了一个简单的解决方案。。。通过brew安装


brew安装名称

Paul Chechetin的一行程序似乎不再有效(9/21/15)。然而,皮特在回复中提到的帖子为我解决了问题:

  • (a) 安装苹果的XCode,然后(b)启动它并接受许可条款(我已经做了(a),但没有(b)。)
  • sudo gem卸载指南针
  • sudo gem安装指南针

    • 这些都不适合我

      最终起作用的是用sudo运行命令-


      gem安装byebug-v'9.0.6'

      已经有一段时间了,我也遇到了类似的错误。使用
      bundler
      的替代方法是将标志添加到构建配置中,如下例所示:

      bundle config build.<gemname> --with-cflags="-Wno-error=implicit-function-declaration"
      
      请注意,您必须将上面的
      替换为生成本机扩展时抛出错误的实际gem的名称


      我希望这对将来面临类似问题的其他人有所帮助

      非常感谢你,你帮了我很多。自从更新到Xcode CLI tools 5.1版本后,我在尝试捆绑Rails 4项目时遇到了大量错误。虽然我需要两次传递
      ARCHFLAGS
      :在安装特定损坏的gems和运行Bundler时。很高兴我能帮助Rafael。我一天中的大部分时间都在同样的混乱中度过。我做了很多事情试图解决这个问题,但我不知道到底解决了哪一个问题,但我安装了新的ruby版本,下载了以前版本的命令行工具(10月底),并在这个答案上执行了命令。这解决了我的问题。在我的例子中,我使用box来安装我的环境,所以我使用的最后一个命令是ARCHFLAGS=-Wno error=unused命令行参数hard error In future/opt/boxen/repo/script/boxen--no fde。谢谢所有帮助我的人。我无法让这个解决方案为我工作。仍然无法使用
      clang:error:unknown参数:'-multiply_definedsuppress'[-Wunused command line argument hard error in future]
      任何想法?您可以尝试显式导出
      export ARCHFLAGS=“…”
      ,然后在新行中运行编译命令,例如
      gem install json
      (我自己编译Python模块). 顺便说一句,别忘了将以前存在的archflags添加到行中,否则它们将被覆盖。我做了很多事情试图解决这个问题,我不知道到底解决了哪一个问题,但我安装了新的ruby版本,下载了以前版本的命令行工具(10月底),并执行了命令@Muncken的答案(ARCHFLAGS=-Wno error=未使用的逗号
      bundle install