web-dev-qa-db-ja.com

sys / types.hはどこにありますか?

<stdlib.h>および<stdio.h>ヘッダーがUbuntuサーバーの/usr/includeフォルダーにあることがわかりましたが、sys/types.hが見つかりません。

そして、コンパイラが/usr/includeフォルダー内のヘッダーファイルを実際に使用しないと疑い始めます。

これは本当ですか、ファイルはどこにありますか?

20
mko

私のDebianボックス(そして、できればUbuntuがそれを破壊していないことを願っていますtoo熱心にたくさん)それは/usr/include/sys/types.h

あなたの最善の策は、最初に実行することです:

find /usr/include -name types.h

その後:

find / -name types.h

最初のもので見つからない場合。

しかし、開発用のものはinstalled。でさえないかもしれないことを覚えておいてください他のものはデフォルトのインストールの一部ではありませんでした(ただし、ftpdApacheなどのサーバーのものがたくさんあります)。

コンパイラがどこかでそれを見つけていて、どこかわからない場合は、次のようなものを使用できます。

echo "#include <sys/types.h>" | gcc -E -x c - | grep /types.h

それがどこから来たのかを知るために。

または:

echo "#include <stdio.h>" | gcc -E -x c - | grep /stdio.h

あなたが心配している他のヘッダーについて。

余談:gccコマンドラインは、前処理段階(-E)、ファイルを強制的にCソースコード(-x c)標準入力からプログラムを取得します(-)、この場合はechoステートメントから。

最後のgrepは、重要でない行を取り除きます。

50
paxdiablo

ファイル sys/types.h/usr/include/sys/types.h

この種の致命的なエラーを取得した場合:

.../linux/linux_types.h:146:38: fatal error: /usr/include/sys/types.h: No
such file or directory

修正次のコードを使用して:

Sudo apt-get install build-essential flex libelf-dev libc6-dev-AMD64 binutils-dev libdwarf-dev
14
rascaL raajA

ロケートコマンドを使用できる場合は、単にlocateを使用できます。

-bash-3.2$ locate sys/types.h
/usr/include/sys/types.h
/usr/lib/syslinux/com32/include/sys/types.h
-bash-3.2$

それはそれをする最も速くて最も簡単な方法です。

6

将来の参考のために、debianマシンでこの問題に遭遇しましたが、私の場合は

$ apt-file find /usr/include/sys/types.h
libc6-dev-i386: /usr/include/sys/types.h

libc6-dev-i386は、インストールする必要があると思われるパッケージです

4
LaPingvino

Linuxでは、types.h/usr/include/sys/types.h

2
wallyk

Slackwareでは、この問題を解決するためにglibcをインストールする必要がありました。