Los archivos de encabezado definen una interfaz:especifican cómo se definen las funciones en el archivo fuente.
Se utilizan para que un compilador pueda verificar si el uso de una función es correcto ya que la firma de la función (valor de retorno y parámetros) está presente en el archivo de encabezado. Para esta tarea, no es necesaria la implementación real de la función.
Podría hacer lo mismo con las fuentes completas del kernel, pero instalará muchos archivos innecesarios.
Ejemplo:si quiero usar la función
int foo(double param);
en un programa no necesito saber cómo la implementación de foo
es, solo necesito saber que acepta un único parámetro (double
) y devuelve un número entero.
Como se indicó, los archivos de encabezado definen las interfaces de las funciones, así como las estructuras utilizadas por los programas.
En el caso de los archivos de encabezado del núcleo, estas funciones y estructuras están dentro del propio núcleo.
Si está construyendo un kernel completo, entonces, obviamente, necesita los archivos fuente completos, no solo los encabezados. Sin embargo, si está compilando un controlador de dispositivo u otro módulo cargable que se vincula con el núcleo, solo necesita los archivos de encabezado, por lo que puede ahorrar espacio al no instalar las fuentes completas.
La separación de paquetes para que pueda instalar solo los archivos de encabezado es en parte histórica, ya que la diferencia en el uso del disco solía ser una consideración importante cuando los discos eran más pequeños. En estos días, tener todo el código fuente en el disco (innecesariamente) no sería una consideración importante de espacio en disco.
El término archivos de encabezado proviene de la C lenguaje de programación utilizado para escribir el kernel de Linux.
Para explicarlo desde un nivel muy alto...
En C, debe tener una declaración hacia adelante de una función antes de usarla. En otras palabras, una descripción de la función, sus parámetros y qué tipo de datos devuelve. Es una práctica común poner todas las declaraciones de reenvío en un solo archivo llamado header. . Los archivos de código fuente para otros programas pueden entonces include
este encabezado y tener acceso a todas las funciones en el ejecutable del programa resultante una vez que se haya compilado.
Los archivos de encabezado de Linux son todos los .h
archivos que contienen las funciones que proporciona el kernel de Linux que se pueden llamar desde otros programas.