最近、Kubuntu 12.04から13.04にアップグレードし、完全に再インストールしました。
Gcc 4.7.3を使用します。 /usr/include/sys
ディレクトリがないことを発見するために、いくつかのプログラムをコンパイルしました。つまり、types.h
、stat.h
などは存在しません。それらはinclude/linux
ディレクトリに存在しますが、include/sys
ディレクトリには存在しません。
どうしたの?
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
64ビットLinuxで作業している場合は、libc6-dev-AMD64をインストールします。 ubuntuターミナルで次のコマンドを入力します。
Sudo apt-get install libc6-dev-AMD64
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ファイルを#include <sys/stat.h>
でコンパイルすると、gccは/usr/include/x86_64-linux-gnu/sys/stat.h
を試みる前に/usr/include/sys/stat.h
を探します。何もシンボリックリンクする必要はありません。
私のアーキテクチャはAMD64なので、libc6-dev-AMD64
はありません。インストールするパッケージはlibc6-dev-i386
です。
これにより、CPANパッケージの依存関係が修正されました。
sysディレクトリは、多くのシステムコマンドを含むunix/linuxシステムヘッダーディレクトリです。異なるブランド/バージョンlinuxは、異なる場所にそれを置くかもしれません。次のコマンドが役立ちます。
find /usr/include -type d -name sys
On my ubuntu 16 got the two
/usr/include/bsd/sys
/usr/include/x86_64-linux-gnu/sys
最初のものは、BSD unixシステムヘッダーのホームです。
2つ目は、Linux 64ビットシステムヘッドを含むディレクトリです。
Sys/stat.hファイルが見つからないという問題が発生します。私の一時的な解決策は、シンボリックリンクを作成することです
/user/local/include/sys/stat.h from /usr/include/x86_64-linux-gnu/sys/stat.h
/ usr/includeディレクトリを汚染したくありません。sysディレクトリ全体ではなく、1つの特定のヘッダーファイルへのリンクのみを作成しています。これはcmakeの欠陥だと思うので、リンクを1つだけ作成することで影響を最小限に抑えます。これが同じ問題に苦しんでいる人々を助けることを願っています。