under /usr/include/linux
およびunder ヘッダー/usr/include/asm*
は、Linuxカーネルとともに配布されます。他のヘッダは(/usr/include/sys/*.h
、/usr/include/bits/*.h
およびより多くの)はCライブラリ(と一緒に配布されているGNU Cライブラリ、また、すべての非組み込みLinuxシステムでは、glibcのとして知られています)。glibcのマニュアルに少し説明があります。
実行中のカーネルのヘッダーではなく、Cライブラリのコンパイル時に使用されたヘッダーが含まれることに注意し/usr/include/linux
て/usr/include/asm
ください。そうしないと、いくつかの定数またはデータ構造が変更された場合、コンパイルされたプログラムとCライブラリの間に不整合が生じ、クラッシュまたはさらに悪化する可能性があります。(ヘッダーがCライブラリと一致するが、Cライブラリがカーネルと一致しない場合、実際に起こるのは、カーネルが安定したABIを維持するように設計されており、異なるABIで呼び出されたことを検出し、それに応じてsyscall引数を解釈する必要があることです。とにかく、カーネルは静的にコンパイルされたプログラムに対してこれを行う必要があります。)
DebianとRed Hatの間でこの/usr/include/linux
問題についてしばらく(10年?)熱く議論されたことを覚えています。明らかに、それぞれの側がその位置に固執しています。(私が理解している限り、Debianは上で説明したように正しいです。)Debianは現在、カーネルソースからコンパイルされているが、カーネルでアップグレードされていないパッケージで配布されて/usr/include/linux
おり、友だちlinux-libc-dev
です。カーネルヘッダーは、linux-headers-2.6
メタパッケージを提供するバージョン固有のパッケージに含まれています。これは、特定のカーネルバージョンのモジュールをコンパイルするために必要なものです。
探しているパッケージはCライブラリのヘッダーです。それが何と呼ばれるのかはわかりませんが、で確認できますyum provides /usr/include/sys/types.h
。
glibc-headers
です。