SNSへはこちら

XcodeやmacOSアプデ時にstdio.hが見つからないときの対処法まとめ

つい先日、macOS Mojave にアップデートしました。High Sierra が散々な出来だったので人柱とかそんなのお構いなしに速攻アップデートです。
その後、gcc を実行した所 stdio.h: No such a file or directory となりハマったのでまとめます。

やってしまったこと

macOS アプデ後に Xcode もアプデ。そのアプデ最中に気が早まって xcode-select --install を実行してしまった。(以下に述べるようにこのことは関係がない?)

以下、ググって出た対処法と状況です。

(失敗)再度 xcode-select する

中途半端にコマンドライン SDK がインストールされているのか?と思い以下を実行してみました。

$ sudo rm -rf /Library/Developer/CommandLineTools # 一回消しちゃえ
$ xcode-select --install # もういっちょ

再起動しても状況は変わらず。

(失敗) /usr/include にリンクを張り直す

とりあえずやってみた所、SIP に弾かれて失敗です。不用意にこういうことしないほうが良いですね。

$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ /usr/include

(成功) ヘッダインストール用の pkg を実行

stdio.h file not found error on macOS Sierra · Issue #338 · frida/frida によると macOS_SDK_headers_for_macOS という名のパッケージを実行すればいいという。それにスレッドには

The root reason is missing the /usr/include folder, install command-line tools sometimes will not automatically add it.

という記述が見つかります。運が悪かったのか?それとも日頃の行いが悪いのか?謎は深まるばかりですがとりあえず実行してみます。

$ open /Library/Developer/CommandLineTools/Packages

このディレクトリの中に…ありました!

実行した所、見事 stdio.h が見つかったのでした。

以上、とりあえずまとめておきました。