<stdlib.h>
および<stdio.h>
ヘッダーがUbuntuサーバーのフォルダーにあることがわかりましたが、見つかり/usr/include
ませんsys/types.h
。
/usr/include
そして、コンパイラーがフォルダー内のヘッダーファイルを実際に使用しないのではないかと疑い始めました。
これは本当ですか? ファイルはどこにありますか?
私の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
) の後に停止します。-x c
)。と-
標準入力 ( ) から、この場合はecho
ステートメントからプログラムを取得します。最後grep
に、インクルードされたファイルの場所を含む可能性が高い行を残して、重要でない行を取り除きます。
ファイル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
使用可能な検索コマンドがある場合は、次を使用できますlocate
。
-bash-3.2$ locate sys/types.h
/usr/include/sys/types.h
/usr/lib/syslinux/com32/include/sys/types.h
-bash-3.2$
これは、最も速くて簡単な方法です。
将来の参考のために、私は自分の debian マシンでこの問題に遭遇しました。
$ apt-file find /usr/include/sys/types.h
libc6-dev-i386: /usr/include/sys/types.h
libc6-dev-i386 は、インストールする必要があると思われるパッケージです
Linuxでは、にtypes.h
ある必要があり/usr/include/sys/types.h
ます。