最近、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 パッケージの依存関係が修正されました。