Bueno, con las explicaciones tan extensas que le estamos dando a una novata
me parece que se puede hacer un lío. Voy a intentar aclarar algunas cosas.

On Fri, 6 May 2005 [EMAIL PROTECTED] wrote:

> > 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)

Yo diría mejor: glibc = GNU libc = la libc de GNU, que es la que usan
normalmente los sistemas basados en Linux (desde que libc es libc6)
y también es la que usa el Hurd.

> 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

Efectivamente.

> y todos los programas en C necesitan glibc para ejecutarse,

Si están enlazados dinámicamente, es decir, el 99,99%.

> así que un glibc 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).

Bueno, hoy en día los desastres son escasos. Hay compatiblidad hacia
atrás. Por ejemplo, la libc de sarge está seguramente compilada con
las cabeceras de Linux 2.6. De esta forma funcionará todo tanto si uno
usa Linux 2.4 como si usa Linux 2.6, y no hay que preocuparse de nada.

> P.D: realmente no es necesario saber de estas cosas para usar linux.
> [...]

Completamente de acuerdo. Y para simplificar aún más: Para compilar
prácticamente cualquier cosa se necesita el paquete libc6-dev, que a
su vez *ya* depende de un paquete llamado linux-kernel-headers, que ya
contiene unas cabeceras del núcleo que se suponen estables y que no
hace falta cambiar por otras distintas, incluso si hemos compilado
nuestro propio núcleo.

Si ves algún README o HOWTO que diga que hagas enlaces en /usr/include,
NO HAGAS CASO. Lo que hay en /usr/include debería estar siempre bajo
el control del sistema de paquetes, y Debian ya se encarga de que
gcc funcione adecuadamente sin que haya que hacer eso.

Antiguamente libc6-dev incluía una colección de cabeceras del núcleo
que se daban por estables, y desde hace mucho tiempo nadie ha tenido
que tocar cosas en /usr/include como el README de Linux decía. Ahora
libc6-dev depende de linux-kernel-headers, pero la recomendación
de no tocar nada en /usr/include sigue siendo la misma.

Responder a