最近、Kubuntu 12.04から13.04に完全に再インストールしてアップグレードしました。
gcc 4.7.3を使用します。/usr/include/sys
ディレクトリがないことを発見するために、いくつかのプログラムをコンパイルしました。つまり、types.h
、stat.h
、など、存在しません。それらはinclude/linux
ディレクトリに存在しますが、ディレクトリには存在しませんinclude/sys
。
どうしたの?
最近、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
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ビットシステムヘッドを含むディレクトリです。
cmakeがsys / stat.hファイルを見つけられないという問題が発生しました。私の一時的な解決策は、シンボリックリンクを作成することです
/user/local/include/sys/stat.h from /usr/include/x86_64-linux-gnu/sys/stat.h
/ usr / includeディレクトリを汚染したくありません。sysディレクトリ全体ではなく、特定のヘッダーファイルへのリンクのみを作成しています。これはcmakeの欠陥だと思うので、リンクを1つだけにすることで影響を最小限に抑えます。これが同じ問題に苦しんでいる人々を助けることを願っています。
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パッケージの依存関係が修正されました。