I file di intestazione definiscono un'interfaccia:specificano come sono definite le funzioni nel file sorgente.
Vengono utilizzati in modo che un compilatore possa verificare se l'utilizzo di una funzione è corretto in quanto la firma della funzione (valore restituito e parametri) è presente nel file di intestazione. Per questa attività non è necessaria l'effettiva implementazione della funzione.
Potresti fare lo stesso con i sorgenti completi del kernel ma installerai molti file non necessari.
Esempio:se voglio usare la funzione
int foo(double param);
in un programma non ho bisogno di sapere come l'implementazione di foo
è, ho solo bisogno di sapere che accetta un singolo parametro (double
) e restituisce un numero intero.
Come affermato, i file di intestazione definiscono le interfacce alle funzioni e le strutture utilizzate dai programmi.
Nel caso dei file header del kernel, queste funzioni e strutture sono all'interno del kernel stesso.
Se stai costruendo un kernel completo, allora, ovviamente, hai bisogno dei file sorgente completi, non solo delle intestazioni. Tuttavia, se stai compilando un driver di dispositivo o un altro modulo caricabile che si collega al kernel, hai bisogno solo dei file di intestazione, quindi puoi risparmiare spazio non installando i sorgenti completi.
La separazione dei pacchetti in modo da poter installare solo i file di intestazione è in parte storica poiché la differenza nell'utilizzo del disco era una considerazione significativa quando i dischi erano più piccoli. Al giorno d'oggi, avere l'intera sorgente su disco (inutilmente) non sarebbe una considerazione importante per lo spazio su disco.
Il termine file di intestazione deriva dalla C linguaggio di programmazione utilizzato per scrivere il kernel Linux.
Per spiegarlo da un livello molto alto...
In C, devi avere una dichiarazione diretta di una funzione prima di utilizzarla. In altre parole, una descrizione della funzione, dei suoi parametri e del tipo di dati che restituisce. È prassi comune inserire tutte le dichiarazioni anticipate in un singolo file chiamato intestazione . I file di codice sorgente per altri programmi possono quindi include
questa intestazione e avere accesso a tutte le funzioni nell'eseguibile del programma risultante dopo che è stato compilato.
I file di intestazione di Linux sono tutti .h
file che contengono le funzioni fornite dal kernel Linux che possono essere richiamate da altri programmi.