【macOS Mojave】macOS MojaveにアプデしたらCのヘッダーファイルが読み込まれなくなった件
macOSアプデしたら、なぜかCのコードでエラーが大量発生した
表題の通りです.macOSをMojaveにアプデしたら,今まで動いていたCのコードが全く動かなくなりました. 最初は自分が使っているIDE,「CLion」がOSのアプデにより何かおかしくなったのかな?と思ってCLionのアプデをしたりしましたが,全く変わりませんでした.
原因は?
やはり新OSリリース直後なので,諸々の対応が追いついてないのでは?という意見がありました.
[MacOS Mojave]pyenvでpythonのインストールがzlibエラーで失敗した時の対応 - Qiita
直接的な原因としては,デフォルト設定でCのヘッダーファイルが/usr/include
に置かれないことにあるようです.
しかし,そんなこと今までなかったぞ...と思っていると本質的な原因がわかりました.
そもそも,macではCやC++のコンパイラはXCode由来のようで,OSアプデをした後にXCodeもアプデをしたのですが,そのアプデ内容に
「Mojave用のmacOS SDK headerがデフォルトで入っていないのが原因」みたいです.
対処法は?
問題はここからなのですが,様々な記事で指摘されている通り,対処法はそのSDKファイルを手に入れることなのですが,なぜかみなさん既にPCに入っていて
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
にあるとのこと.自分も探してみたのですが,
$ cd /Library/Developer/CommandLineTools/Packages/ > cd: no such file or directory:
はい,ない.
ということで,まずAppleのデベロッパーアカウントを使って目的のSDKファイルを手に入れます.
まずはこのAppleのサイト(
https://developer.apple.com/download/more/
)に入ってください.僕の場合はアカウントはいつの間にか持ってました.
ログイン後,以下のような画面になります.そこでCommand Line Tools (macOS 10.14) for Xcode 10.1
をダウンロードしてください.
これを入れることにより,先ほどのディレクトリにSDKファイルが生まれます.あとは
$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
で,基本的にCのコードは全て動くようになります.
CLionの再設定(蛇足)
上の手順に従えば,基本的にCのコードは動くようになるはずです. 自分はIDEでCLionを使っているのですが,エディタ上では赤いままだったので,それを直すために以下のことをしました.
Tools | CMake | Reset Cache and Reload Project
キャッシュ決して再読み込みすれば,勝手に直ってくれました.CLion最高!
最後に
macOS MojaveではこのSDKファイルの設定がないせいで,PythonやRailsにも被害が及んでいるようです.さらに友人の話だとgitも動かなくなったという話(また入れればいいだけだけど)も聞きましたので,皆様もOSアプデは注意して,しっかりバックアップを取ってから行いましょう!