[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: duda novata pero muy importante



On 5/6/05, Bismark Castilla <bismarkcastilla@...> wrote:
> a ver si entendi por lo que he leito ahora y en paginas que he buscado.
> 
> los kernel headers son los .h que tiene el kernel, que son necesarios
> para compilar algunos fuentes ya que ellos se encargan de comunicar
> los software con el kernel algo asi no???

Bueno, yo te hablé de la función de las cabeceras (headers) no de su
forma.  ;-) Efectivamente, en los .h hay:

+declaración de las funciones y argumentos del kernel.
+declaraciones de las estructuras de datos que maneja el kernel 
+declaraciones de constantes asumidas al compilar el kernel. 

Un ejemplo sencillo  que te pongo para aclararlo. Una opción
importante en el kernel es el máximo de memoria ram que soporta (1 gb,
4 gb, ...) en función de la opción escogia, los punteros en C dentro
de un programa serán más grandes o no. Así que todo programa que use
punteros debería examinar en las cabeceras el tamaño de la memoria
para actuar en consecuencia. (En realidad, el tamaño de los punteros
los calcula el compilador de C automáticamente, aunque para ello es
necesario que este esté compilado adecuadamente para el kernel que
tienes ¡y para eso necesitas las cabeceras del kernel! ;-)

 > bueno y ahora que son los glibc?? tengo entendido que son librerias no
> se bien?? y que tienen que ver con los kernel headers??

el lenguaje C tiene solamente 27 instrucciones: int, enum, char, void,
if, for, else, goto, float, double, switch, default, break,
continue... Casualmente todo lo que sea una función (un nombre seguido
de parentesis) y que no hayas definido tu, seguramente está definido
en glibc.  Si escribes en consola:

$ info libc

Tienes información sobre las libc (glibc=gnu + libc)

Como el kernel hay que compilarlo con gcc, supongo que tiene que
existir alguna relación del kernel con el glibc, y hasta aquí puedo
seguir leyendo. (supongo que el glibc necesita de las cabeceras del
kernel para compilarse y  todos los programas en C necesitan glibc
para ejecutarse, así que un glib no coordinado con el correspondiente
kernel dan pie al desastre más grande que uno se puede echar a la
cara, pero esto son ya conjeturas sin fundamento).

atte. javier m mora. 

P.D: realmente no es necesario saber de estas cosas para usar linux.
Lo importante: si no has compilado tu kernel necesitaras las cabeceras
si vas a compilar algo serio. Si no te sales de la «paquetería» que te
suministra debian no tendrás poblemas de dependencias raras entre
estos programas. Por otro lado, mezclar paquetes de RedHat con Suse y
con Debian puede dar fácilmente con problemas de incompatibilidad de
glibc y otros.

atte. javier m mora



Reply to: