Ruby Gem安装Json在Mavericks和Xcode 5.1上失败-未知参数:'-multiply_definedsuppress'


105

我正在尝试运行gem install 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

我正在使用:


操作系统X:10.9.2 Xcode:5.1 Build 5B130a
命令行工具(CLT):5.1.0.0.1.1393561416
Ruby:ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13]
Ruby Gem:2.2 .2
GCC:4.2.1 Apple LLVM版本5.1(clang-503.0.38)(基于LLVM 3.4svn)


1
我做了很多事情试图解决这个问题,但我不知道确切地解决了什么,但是我安装了新的ruby版本,下载了先前版本的命令行工具(10月下旬)并执行了命令@Muncken的答案(ARCHFLAGS = -Wno-error =未使用的命令行参数-以后的硬错误(原始命令))。那解决了我的问题。在我的特定情况下,我使用boxen来安装环境,所以我使用的最后命令是ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde。谢谢大家的帮助。
g8M 2014年

Mavericks 10.9.3将ruby更新为:ruby 2.0.0p451(2014-02-24修订版45167)[universal.x86_64-darwin13]这似乎可以解决问题。
Shahar Hadas

1
问题是像@Sash这样的旧版本的红宝石。我必须使用rvm从2.0.0p2 ..手动更新到2.0.0p451:rvm install ruby​​-2.0.0-p451。rvm应该将其设置为默认版本,然后您只需重新安装gem
Adam Spence

我在rvm ruby​​ 2.2.0p0(2014-12-25修订版49005)中遇到此问题
Sonny Parlin 2015年

Answers:


145

将Xcode更新为5.1后,我遇到了完全相同的问题,来自苹果的消息也不是很好。从Xcode 5.1发行说明

  • Xcode 5.1中的Apple LLVM编译器将无法识别的命令行选项视为错误。在同时构建Python本机扩展和Ruby Gems(其中当前指定了一些无效的编译器选项)时,已经看到此问题。

使用无效的编译器选项的项目将需要更改以删除这些选项。为了帮助简化过渡,编译器将临时接受一个选项,将错误降级为警告:

-Wno-error=unused-command-line-argument-hard-error-in-future

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

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

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

我们看到的clang注释(将来将是一个硬错误(不能降级为警告))对应于发行说明中宣布的更改。


要专门回答您的问题,请使用以下命令安装json gem:

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

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


1
非常感谢您,您对我有很大帮助。自从更新Xcode CLI工具5.1版本以来,在尝试捆绑Rails 4项目时遇到了很多错误。虽然我需要通过ARCHFLAGS两次:安装特定损坏的gem和运行Bundler时。

很高兴我可以帮助拉斐尔。我一整天都在同一混乱中度过。
卡斯珀·蒙克

我做了很多事情试图解决这个问题,我不知道确切解决了什么,但是我安装了新的ruby版本,下载了先前版本的命令行工具(10月下旬),并在此答案上执行了命令。这解决了我的问题。在我的情况下,我使用盒子安装环境,所以我使用的最后命令是ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde。谢谢大家的帮助
g8M 2014年

2
我无法获得适用于我的解决方案。仍然失败,有clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]任何想法吗?
rauberdaniel

1
您可以尝试显式导出export ARCHFLAGS="...",然后在换行中运行编译命令,例如gem install json(我自己在编译Python模块)。顺便说一句,不要忘记将以前存在的archflags添加到该行中,否则它们将被覆盖。
Michiel Kauw-A-Tjoe 2014年

107

一线解决

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

没用 跑命令,但失败了:patching file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb Hunk #1 FAILED at 82. Hunk #2 FAILED at 125. 2 out of 2 hunks FAILED -- saving rejects to file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb.rej
Elijah Murray

19

要解决此问题,您可以按照@Sash的说明安装最新版本的ruby。您可以使用以下命令来执行此操作。如果您已经安装了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

12

Ruby已经解决的问题:

https://bugs.ruby-lang.org/issues/9624

现在我们只需要等待Apple将红宝石版本(2.0.0p247)更新为尚未发布的最新版本(2.0.0p451)之后的版本...(或将其酿造/导入)

更新(2014-05-15):Mavericks 10.9.3将ruby更新为 ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] ,这似乎可以解决问题。


4

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

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

根据Muncken的回答,我尝试过在使用时也可以使用 bundle install

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

你能描述一下吗?
bjb568 2014年

就像@Muncken说的一样,但是他只是提供了答案gem install,我尝试了一下bundle install
可行

即使没有其他答案的上下文,您的答案也应该自己完成。
bjb568 2014年

对。更好,更完善。
bjb568 2014年

此ARCHFLAGS = -Wno-error =未使用的命令行参数-将来的硬错误可用于所有失败的带有clang的命令:error:未知参数:'-multiply_definedsuppress'。实际上,这告诉clang编译器该错误应被视为警告
g8M 2014年

2

就我而言,我实际上有类似的问题,但不是系统红宝石,而是OSM 10.8上的rvm安装的红宝石,并且在升级到OSX 10.9后有问题。

一个简单的重新安装即可: rvm reinstall ruby-2.1.1


在阳光下尽力解决此问题后,这对我来说就是成功!谢谢!
闯入者W 2014年

1

在OSX 10.10上,运行时遇到几个问题,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

您可以从应用程序名称中得知我刚刚开始熟悉Ruby on Rails,因此上述建议可能对您不起作用。


1

Paul Chechetin的单线似乎不再起作用(9/21/15)。然而,这个回答在皮特的答复中提到后解决了这个问题对我来说:

  • (a)安装Apple的XCode,然后(b)启动它并接受许可条款(我做了(a),但没有(b)。)
  • sudo gem uninstall compass
  • sudo gem install compass

我已经更新了Xcode,但从未启动过它。当我启动它时,它提示我接受一些东西,然后必须“安装组件”。在那之后,我gem install json再次尝试了,并且成功了!
莎拉·

1

这些都不对我有用。

最终有效的方法是使用sudo运行命令-

gem install byebug -v'9.0.6'


-1

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

酿造安装名称

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.