ヘッダー ファイルはインターフェイスを定義します。ソース ファイル内の関数がどのように定義されるかを指定します。
関数シグネチャ (戻り値とパラメーター) がヘッダー ファイルに存在するため、関数の使用法が正しいかどうかをコンパイラがチェックできるように、これらが使用されます。このタスクでは、関数の実際の実装は必要ありません。
完全なカーネル ソースで同じことを行うこともできますが、多くの不要なファイルをインストールすることになります。
例:関数を使用したい場合
int foo(double param);
プログラムでは foo
の実装方法を知る必要はありません つまり、単一のパラメーター (double
) を受け入れることを知る必要があるだけです。 ) を返し、整数を返します。
前述のように、ヘッダー ファイルは関数へのインターフェイスと、プログラムで使用される構造を定義します。
カーネル ヘッダー ファイルの場合、これらの関数と構造はカーネル自体の中にあります。
完全なカーネルを構築する場合は、明らかに、ヘッダーだけでなく完全なソース ファイルが必要です。ただし、カーネルにリンクするデバイス ドライバーまたはその他のロード可能なモジュールをコンパイルする場合は、ヘッダー ファイルのみが必要なため、完全なソースをインストールしないことでスペースを節約できます。
ヘッダー ファイルのみをインストールできるようにパッケージを分離することは、ディスクが小さかったときにディスク使用量の違いが重要な考慮事項であったため、部分的に歴史的なものです。最近では、ソース全体を (不必要に) ディスク上に置くことは、主要なディスク容量の考慮事項ではありません。
ヘッダー ファイルという用語は、C に由来します。 Linux カーネルの作成に使用されるプログラミング言語
非常に高いレベルから説明すると...
C では、前方宣言が必要です 関数を使用する前に。つまり、関数の説明、そのパラメーター、および返されるデータの種類です。すべての前方宣言を header と呼ばれる 1 つのファイルに入れるのが一般的です。 .その後、他のプログラムのソース コード ファイルは include
になります。 このヘッダーを取得し、コンパイル後に実行可能なプログラムのすべての関数にアクセスできます。
Linux ヘッダー ファイルはすべて .h
です。 他のプログラムから呼び出すことができる、Linux カーネルが提供する関数を含むファイル。