25

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

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

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

4

5 に答える 5

60

私のDebianボックス(そして、Ubuntuが熱意を持ってあまり解体していないことを願っています)には/usr/include/sys/types.h .

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

find /usr/include -name types.h
find / -name types.h # if not found by one above

ただし、開発用のものはサーバーにインストールされていない可能性があることに注意してください。コンパイラー ファームのサーバーでない限り、コンパイラーやその他の多くのものが既定のインストールに含まれていなくても驚かないでしょう。

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

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

それがどこから得られているかを知るために。

そのgccコマンドライン:

  • 前処理フェーズ ( -E) の後に停止します。
  • ファイルを強制的に C ソース コードとして処理します ( -x c)。と
  • -標準入力 ( ) から、この場合はechoステートメントからプログラムを取得します。

最後grepに、インクルードされたファイルの場所を含む可能性が高い行を残して、重要でない行を取り除きます。

于 2012-08-06T05:52:16.293 に答える
16

ファイル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
于 2012-08-06T06:18:26.740 に答える
7

使用可能な検索コマンドがある場合は、次を使用できますlocate

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

これは、最も速くて簡単な方法です。

于 2012-08-06T06:15:25.400 に答える
4

将来の参考のために、私は自分の debian マシンでこの問題に遭遇しました。

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

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

于 2014-12-04T22:19:09.053 に答える
2

Linuxでは、にtypes.hある必要があり/usr/include/sys/types.hます。

于 2012-08-06T05:50:21.320 に答える