web-dev-qa-db-ja.com

/ usr / include / sysディレクトリはどこですか?

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

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

どうしたの?

11
Duck

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
11
Radu Rădeanu

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

Sudo apt-get install libc6-dev-AMD64
5

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を探します。何もシンボリックリンクする必要はありません。

1
legoscia

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

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

0
Jari Turkia

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つだけ作成することで影響を最小限に抑えます。これが同じ問題に苦しんでいる人々を助けることを願っています。

0
Kemin Zhou