- 更新日: 2016年1月20日
- Ruby
El Capitanでgemのnative extensionビルド失敗に対応
Mac OS を El Capitan にアップデートした後、ruby gem インストール時の native extension ビルドで失敗するようになったので、そのための対応策。El Capitan にアップデートと同時に Xcode も 7 にバージョンアップされました。
— 環境 —
Mac OS X El Capitan 10.11.2
Xcode 7.2
Ruby 2.1.2
You have to install development tools first.
Native Extension が必要な gem をインストールしようとすると、以下のようにエラー発生。
1 2 3 4 5 6 7 8 |
$ gem install nokogiri /path/to/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/ext/builder.rb:89:in `run': ERROR: Failed to build gem native extension. (Gem::Ext::BuildError) /path/to/.rbenv/versions/2.1.2/bin/ruby extconf.rb checking for ruby/util.h... /path/to/.rbenv/versions/2.1.2/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. ... |
気になるメッセージの箇所。
1 2 3 4 |
Failed to build gem native extension. (Gem::Ext::BuildError) You have to install development tools first. |
上記メッセージを頼りに検索して、ios – ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension – Stack Overflow 等を参考に、Xcode のコマンドラインツールをインストールしました。
Xcode コマンドラインツールをインストール
まずは、Xcode コマンドラインツールをインストールします。ターミナルから以下を実行する。
1 2 3 |
$ xcode-select --install |
以下のようなダイアログが表示されるので、install をクリックしてインストール。
ここで gem インストールを再度試みたところ、またもエラー発生。Native Extension のビルドエラーなので、gcc 絡みと当たりを付けていまして、以降の作業を行いました。
$ sudo gcc コマンドでライセンスに同意
gcc コマンドの場所を確認。
1 2 3 4 |
$ which gcc /usr/bin/gcc |
続いて gcc コマンドのバージョンを確認しようとしたところ…
1 2 3 4 |
$ gcc --version Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo. |
Xcode/iOS のライセンス確認のために、sudo で実行してくれと出たのでそれに従う。
1 2 3 4 5 6 7 8 9 10 |
$ sudo gcc --version Password: You have not agreed to the Xcode license agreements. You must agree to both license agreements below in order to use Xcode. Hit the Enter key to view the license agreements at '/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf' Apple Inc. Xcode and Apple SDKs Agreement ... Software License Agreements Press 'Space' for more, or 'q' to quit |
Space を押してライセンス規約を読んで終了。どうやら、これで gcc コマンド(/usr/bin/gcc)がコマンドラインからも呼び出せるようになって、Native Extension をビルドできるようになる… ということらしい。
もう一回、一般ユーザーで gcc のバージョン確認。
1 2 3 4 5 6 7 |
$ gcc --version Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 7.0.2 (clang-700.1.81) Target: x86_64-apple-darwin15.2.0 Thread model: posix |
再び gem インストールを試したところ今度は成功しました。以上で gem の native extension を無事にビルドできるようになった。
- – 参考リンク –
- ios – ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension – Stack Overflow
- OS X 10.11 で RubyGems の native extension のビルドに失敗したら | Step by Step
- OSX – CocoaPodsのインストールで色々ハマった。 – Qiita
- Xcode 4.3以降でコマンドライン上からgccを使えるようにするには
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- Rubyで親クラスから子クラスの定数を参照
- MacabをRubyで使う
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
- Yahoo地図API(YOLP)のジオコーダAPIで住所から緯度・経度を求めるRubyコード
Leave Your Message!