概要
- Gem のインストールの際、native extension のビルドでエラー
- Xcode のライセンスに同意することで gcc コマンドが使えるようになって解決
- 参照:El Capitanでgemのnative extensionビルド失敗に対応 | EasyRamble
問題
bundle install の途中、ffi
という Gem の v1.9.18 をインストール中にエラー:
ERROR: Error installing ffi:
ERROR: Failed to build gem native extension.
調査
もちろん次のように Gem を単体でインストールしようとしてもエラーする。
$ gem install ffi -v '1.9.18'
エラーメッセージの中には development tools を入れろとある。
The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
メッセージでググってこのページを発見。
こちらを参考にさせていただきました。
解決
以下、参考ページに従って解決。
今回は xcode-select
はすでにインストール済み。
$ xcode-select --version
xcode-select version 2347.
しかし、参考ページと同様、gcc コマンドが使えない状態だった。
$ gcc --version
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
メッセージで言われたとおり sudo xcodebuild -license
を実行する。
$ sudo xcodebuild -license
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'
Enter を押すと、ライセンスが表示されて、Software License Agreements Press 'space' for more, or 'q' to quit
と言われる(ここでスペース押せば同意?)。
最後まで読むと By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel]
と言われるので aggree
を入力して同意。
You can view the license agreements in Xcode's About Box, or at /Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf
これで gcc
コマンドが使えるようになった。
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
こうして ffi
もインストールでき、めでたく bundle install も通りましたとさ。
$ gem install ffi -v '1.9.18'
Building native extensions. This could take a while...
Successfully installed ffi-1.9.18
Parsing documentation for ffi-1.9.18
Installing ri documentation for ffi-1.9.18
Done installing documentation for ffi after 20 seconds
1 gem installed
余談
正直、具体的にどこで gcc が使われているのかわかっていません...