macOSでgccを叩いたら異様に時間がかかる

/Applications/Xcode.app を消すと早くなります.

前々から競プロのコンテスト中に手元で実行結果を確認する際にいつも時間がかかっていて
よくないなあと思っていたので解決しました.

 

何が起きているの?

1. gcc, git などのコマンドを macOS の端末(私は iTerm2)で叩くと異様に時間がかかる
私は MBA と MBP を持っていて,使い始めた時期が違うのでセットアップも違った
MBA のほうが異様に時間がかかっていた

2. 端末のバーを眺めていたら xcodebuild, xcrun というコマンドを経由していた
名前からしてどう考えても Xcode が影響してる,本当にありがとうございました

 

調査

最初に気付いたのは gcc だったので macOS での gcc について調べてみると,Xcode/Command Line Tools, Homebrew, MacPorts の 3 種類からインストールできるらしい.
Homebrew からインストールしていると

$ gcc --v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc49/4.9.3/libexec/gcc/x86_64-apple-darwin15.4.0/4.9.3/lto-wrapper
Target: x86_64-apple-darwin15.4.0
Configured with: ../configure --build=x86_64-apple-darwin15.4.0 --prefix=/usr/local/Cellar/gcc49/4.9.3 --libdir=/usr/local/Cellar/gcc49/4.9.3/lib/gcc/4.9 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-4.9 --with-gmp=/usr/local/opt/gmp4 --with-mpfr=/usr/local/opt/mpfr2 --with-mpc=/usr/local/opt/libmpc08 --with-cloog=/usr/local/opt/cloog018 --with-isl=/usr/local/opt/isl011 --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew gcc49 4.9.3' --with-bugurl=https://github.com/Homebrew/homebrew-versions/issues --enable-plugin --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.3 (Homebrew gcc49 4.9.3)
 
OSX の gcc を変更した話 - Qiita

のように Homebrew からだと分かるらしい.
MBA と MBP の両方で $ gcc -v を叩いてみる(同じ macOS のはずだけど --v じゃなかったので,この時点で Homebrew じゃないなという感じ).
macOS なので上記のページの引用部分の下にもあるように "InstalledDir" が表示された.
(ログを取り忘れたけれど)MBA では /Applications/Xcode.app/hoge/fuga/.../ に,MBP では /Library/hoge/fuga/.../ に存在していた.
やっぱり Xcode 関連で,パスか何かが悪さしてるのかなあって気になる.
とりあえず gcc のパス /Library/ 以下になるようにすればいいかと思うけど,リンカとか壊れたら怖いし,リンクもよく分かってないので触るの怖い.
MBP も Homebrew で入れていないことは確かだし,MacPorts は触れたことがないので Xcode を入れ直したらよしなになるかと思って,Xcode を消す方向でいく.
ちなみに後から MBP の /Applications/ を見たら空っぽだった.狐につままれた気分.つまり最初からそういうことだった.

 

解決方法

Xcode.app なしで Command Line Tools の gcc を入れます.

1. Xcode を消去
XCodeがアンインストール。なんか動作が変なので - それマグで! を参考に
する前に私は GUI でゴミ箱にポイーってした
後から端末を叩いて確認したけれど開発ツールは特になかった
(2行目のほうって rm いらないんだろうか)

sudo rm /Applications/XCode.app
sudo /Developer/Library/uninstall-devtools --mode=all

2. Command Line Tools を入れる
新しい情報とは言えないけれど,こんなコマンドを MBP のセットアップ時に叩いた記憶が蘇ってきたので叩いた

$ xcode-select --install
Xcode 4.3以降でコマンドライン上からgccを使えるようにするには

3. 念のため $ gcc -v で動作確認,お疲れ様でした