¿Qué es GLIBC? ¿Para qué se utiliza?


Estaba buscando el código fuente de las bibliotecas estándar de C. Lo que quiero decir con él es, por ejemplo, cómo son cos, abs, printf, scanf, fopen, y todas las otras funciones C estándar escritas, me refiero a ver su código fuente.

Así que mientras buscaba esto, me encontré con GLIBC, pero no se lo que realmente es. Es la Biblioteca C de GNU, y contiene algunos códigos fuente, pero ¿cuáles son en realidad, son el código fuente de las funciones estándar o son algo más? Y para qué se utiliza?

Author: David Arenburg, 2012-07-13

4 answers

Es la implementación de Biblioteca estándar de C descrito en los estándares de C más algunas materias útiles adicionales que no son estrictamente estándar, pero se utiliza 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. (open (), read () etc. En realidad glibc no" implementa " llamadas al sistema. kernel lo hace. Pero glibc proporciona la interfaz de tierra de usuario a los servicios proporcionados por el kernel para que la aplicación de usuario pueda usar una llamada al sistema como una función ordinaria.

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

"usa la fuerza, lee la fuente"

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

(Recientemente fui bastante iluminado cuando miré a través de malloc.c in glibc)

 38
Author: Aftnix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-27 08:08:15

Hay varias implementaciones del estándar. Glibc es la implementación que la mayoría de Linuxes usan, pero hay otras. Glibc también contiene (como dice Aftnix) las funciones glue que configuran la escena para saltos en el núcleo (también conocidas como llamadas al sistema). Muchas de las 'funciones' de glibc no hacen el trabajo real sino que solo delegan al núcleo.

Para leer la fuente de Glibc, solo búscala en Google. Hay innumerables sitios que lo llevan, y también varios variaciones.

Windows utiliza la propia implementación de Microsoft, que creo que se llama MSVCR.DLL. Dudo que encuentre el código fuente de esa biblioteca en cualquier lugar. También tenga en cuenta que algunas funciones que un hacker de Linux podría pensar como 'estándar', simplemente no existen en Windows (notablemente fork). Lo contrario también es cierto.

Otros sistemas tendrán su propio libc.

 7
Author: jforberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-12 22:03:39

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

 6
Author: Sandy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-23 12:02:21

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 usan el núcleo Linux.

 1
Author: ardent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-12 21:25:29