1. ホーム
  2. ruby

[解決済み] Mavericks と Xcode 5.1 で Ruby Gem install Json が失敗する - unknown argument: '-multiply_definedsuppress'.

2022-12-01 01:09:59

質問

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

使っています。

Os X。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].

Ruby Gem:2.2.2です。

GCC: 4.2.1 Apple LLVM version 5.1 (clang-503.0.38) (LLVM 3.4svn をベースにしたもの)

どのように解決するのですか?

Xcode を 5.1 にアップデートした後、まったく同じ問題に遭遇しており、Apple からのニュースは良いものではありません。以下から 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

コンパイラのオプションに違反するすべてのgemは、有効なオプションを使用するように更新されなければならないようです。と明言されています。 このオプション [エラーを警告に格下げ] は将来的にサポートされません。 .

私たちが見ている clang note ( これは将来的にハードエラー(警告にダウングレードできない)になります。 ) は、リリースノートで発表された変更に対応するものです。


具体的な質問の答えですが、json gemのインストールには以下を使用します。

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

しかし、これは一時的な修正に過ぎないことに注意してください。