/usr/include/sys ディレクトリはどこにありますか?

/usr/include/sys ディレクトリはどこにありますか?

最近、Kubuntu 12.04 から 13.04 にアップグレードし、完全に再インストールしました。

gcc 4.7.3 を使用しています。いくつかのプログラムをコンパイルしたところ、ディレクトリがないことがわかりました/usr/include/sys。つまり、、、types.hなどstat.hが存在しません。これらはinclude/linuxディレクトリに存在しますが、は存在しませんinclude/sys

どうしたの?

答え1

64 ビットで Ubuntu を使用している場合 (32 ビット システムでは現時点では正確にテキストを入力できません)、質問のディレクトリは次のようになります。

/usr/include/x86_64-linux-gnu/sys

この情報を入手したら、/usr/include/sysターミナルで次のコマンドを使用して、その場所 ( ) に本当に必要なファイルへのシンボリック リンクを作成できます。

sudo ln -s /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/sys/types.h
sudo ln -s /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/sys/stat.h

# ...etc

答え2

64 ビット Linux で作業している場合は、libc6-dev-amd64 をインストールしてください。Ubuntu ターミナルで次のコマンドを入力します。

sudo apt-get install libc6-dev-amd64

答え3

gccのデフォルトのインクルード検索パスを確認してみましょう。この答えこのコマンドを取得します:

gcc -xc -E -v -

出力の最後に、私のマシンでは次のように表示されます。

ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include

最後から 2 番目の行に注目してください。これは、 を含む C ファイルをコンパイルすると、gcc は を試す前に#include <sys/stat.h>を探すので、シンボリックリンクを作成する必要がないことを意味します。/usr/include/x86_64-linux-gnu/sys/stat.h/usr/include/sys/stat.h

答え4

私のアーキテクチャは amd64 なので、 はありませんlibc6-dev-amd64。インストールするパッケージは ですlibc6-dev-i386

これにより、CPAN パッケージの依存関係が修正されました。

関連情報