name keywords etiquetas ejemplos description content c gnu glibc standard-library

c - keywords - meta tags seo



¿Qué es GLIBC? ¿Para qué se usa esto? (4)

El paquete glibc contiene bibliotecas estándar que son utilizadas por múltiples programas en el sistema. Para ahorrar espacio en el disco y la memoria, así como para facilitar la actualización, el código común del sistema se guarda en un solo lugar y se comparte entre programas. Este paquete en particular contiene los conjuntos más importantes de bibliotecas compartidas: la biblioteca C estándar y la biblioteca matemática estándar. Sin estas dos bibliotecas, un sistema Linux no funcionará. El paquete glibc también contiene soporte de idioma nacional (configuración regional).

Estaba buscando el código fuente de las bibliotecas estándar de C. Lo que quiero decir con esto es, por ejemplo, cómo se escriben cos, abs, printf, scanf, fopen y todas las demás funciones estándar de C, quiero ver su código fuente.

Entonces, mientras buscaba esto, me encontré con GLIBC, pero no sé qué es realmente. Es la biblioteca GNU C, y contiene algunos códigos fuente, pero ¿qué son en realidad, son el código fuente de las funciones estándar o son otra cosa? ¿Y para qué se usa?


Es la implementación de la biblioteca C estándar descrita en los estándares C más algunas cosas útiles adicionales que no son estrictamente estándar pero se usan con frecuencia

Sus principales contenidos son:

1) Biblioteca C descrita en los estándares ANSI, c99, c11. Incluye macros, símbolos, implementaciones de funciones, etc. (printf (), malloc (), etc.)

2) biblioteca estándar POSIX. El pegamento "userland" de las llamadas al sistema. (abrir (), leer (), etc. En realidad, glibc no "implementa" llamadas al sistema. El kernel lo hace. Pero glibc proporciona la interfaz de usuario a los servicios proporcionados por el kernel para que la aplicación del usuario pueda usar una llamada al sistema como un usuario ordinario función.

3) También algunas cosas no estándar pero útiles.

"Usa la fuerza, lee la fuente"

$git clone git://sourceware.org/git/glibc.git

(Hace poco me iluminé bastante cuando miré a través de malloc.c en glibc)


Existen varias implementaciones de la norma. Glibc es la implementación que utilizan la mayoría de los Linux, pero hay otros. Glibc también contiene (como indica Aftnix) las funciones de pegamento que configuran la escena para los saltos en el kernel (también conocidas como llamadas al sistema). Muchas de las ''funciones'' de glibc no hacen el trabajo real, solo delegan en el núcleo.

Para leer la fuente de Glibc, simplemente busca en Google. Hay innumerables sitios que lo llevan, y también varias variaciones.

Windows usa la implementación de Microsoft, que creo que se llama MSVCR.DLL. Dudo que encuentres el código fuente de esa biblioteca en cualquier parte. También tenga en cuenta que algunas funciones que un hacker de Linux podría considerar como "estándar", simplemente no existen en Windows (en particular, en fork). Lo contrario también es cierto.

Otros sistemas tendrán su propia libc.


Sí, es la implementación de funciones de biblioteca estándar.

Más específicamente, es la implementación para todos los sistemas GNU y en casi todos los sistemas * NIX que utilizan el kernel de Linux.