macOSをMojaveにしたらC言語をコンパイルできなくなった
題名の通り。
仕事でも Mojave を使ってるし、そろそろ自宅の Mac Book も Mojave にしていいかと思って先日バージョンアップした。
何かが壊れるのは覚悟していたけど、結論からいうと Homebrew や gcc が動かなくなった。
※今判明しているのがこれらで、多分ほかにも(原因はなんにせよ)動かないものがあると思う。
ちなみに出てきたエラーはこんな感じ。
$ gcc --version xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
目次
Xcodeの再インストール
結論を書くと、アップグレードにより command line developer tools が使えなくなってるので再インストールすればいい。
$ xcode-select --install
これでとりあえず Homebrew なんかは動くようになる。
ついでに gcc-9 を gcc としてシンボリックリンクを貼り直す。
$ ls /usr/local/bin/ | grep gcc gcc-4.9 gcc-9 gcc-ar-4.9 gcc-ar-9 ... $ ln -s /usr/local/bin/gcc-9 /usr/local/bin/gcc
これでとりあえず gcc も最低限動くようになった。
$ gcc --version gcc (Homebrew GCC 9.2.0) 9.2.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
/usr/include/にヘッダファイルを追加
しかし、コンパイルしようとすると stdio.h がないと怒られる。
$ gcc hello.c In file included from hello.c:1: /usr/local/Cellar/gcc/8.3.0/lib/gcc/8/gcc/x86_64-apple-darwin17.7.0/8.3.0/include-fixed/stdio.h:78:10: fatal error: _stdio.h: No such file or directory
どうやら Xcode 10 からデフォルトではヘッダファイルを /usr/include/ に置いてくれなくなったらしい。
Missing /usr/include w/ Xcode 10 | Apple Developer Forums
これは以下のパッケージを開いてぽちぽちとインストールすれば解決できる。
$ open /Library/Developer/CommandLineTools/Packages
これで無事コンパイルできるようになった。