症状
Ubuntu18.04でC言語のコンパイル時に以下のエラーが出たときの対処方法をメモしておきます。
sys/cdefs.h: そのようなファイルやディレクトリはありません
対処
普通はlibc6-dev-i386をインストールすれば治るようです。
sudo apt install libc6-dev-i386
私の場合、libc6-dev-i386は既にインストールされていました。
libc6-devを再インストールすることで解決しました。
sudo apt install --reinstall libc6-dev
原因
/usr/include/sys/cdefs.hは/usr/include/x86_64-linux-gnu/sys/cdefs.hへのシンボリックリンクになっています。
その/usr/include/x86_64-linux-gnu/sys/が存在しなかったことが原因でした。
おそらく、sysを除外したバックアップから復元したときにやってしまったようです。うっかりすぎますね。