web-dev-qa-db-fra.com

Qu'est-ce que GLIBC? A quoi cela sert?

Je cherchais le code source des bibliothèques standard C. Ce que je veux dire, par exemple, c'est comment sont écrits cos, abs, printf, scanf, fopen et toutes les autres fonctions standard C, je veux voir leur code source.

Donc, en cherchant cela, je suis tombé sur GLIBC, mais je ne sais pas ce que c'est en réalité. C'est la bibliothèque GNU C, et elle contient des codes sources, mais que sont-ils réellement, s'agit-il du code source des fonctions standard ou s'agit-il d'autre chose? Et à quoi sert-il?

27
user1261015

C’est l’implémentation de bibliothèque standard C décrite dans les normes C, plus quelques éléments utiles supplémentaires qui ne sont pas strictement standard mais utilisés fréquemment.

Son contenu principal est:

1) Bibliothèque C décrite dans les normes ANSI, c99 et c11. Il comprend des macros, des symboles, des implémentations de fonctions, etc. (printf (), malloc (), etc.)

2) bibliothèque standard POSIX. La colle "utilisateur" des appels système. (open (), read () etc. En fait, glibc ne "met pas en œuvre" les appels système. Le noyau le fait. Mais glibc fournit une interface utilisateur aux services fournis par le noyau, de sorte que l’application utilisateur puisse utiliser un appel système de une fonction.

3) Également des choses non standard mais utiles.

"utiliser la force, lire la source"

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

(J'étais récemment assez éclairé quand j'ai parcouru malloc.c dans Glibc)

42
Aftnix

Il existe plusieurs implémentations de la norme. Glibc est l'implémentation utilisée par la plupart des Linux, mais il en existe d'autres. Glibc contient également (comme indiqué par Aftnix) les fonctions de liaison qui configurent la scène pour les sauts dans le noyau (également appelés appels système). Un grand nombre de «fonctions» de glibc ne font pas le travail à proprement parler, elles ne font que déléguer au noyau.

Pour lire la source de Glibc, recherchez simplement Google. Il existe une myriade de sites qui le portent, ainsi que plusieurs variantes.

Windows utilise la propre implémentation de Microsoft, qui s'appelle, je crois, MSVCR.DLL. Je doute que vous trouviez le code source de cette bibliothèque n’importe où. Notez également que certaines fonctions qu'un pirate Linux pourrait considérer comme "standard" n'existent tout simplement pas sous Windows (notamment fork). L'inverse est également vrai.

Les autres systèmes auront leur propre libc.

9
jforberg

Le paquet glibc contient des bibliothèques standard utilisées par plusieurs programmes du système. Afin d'économiser de l'espace disque et de la mémoire et de faciliter la mise à niveau, le code système commun est conservé à un endroit et partagé entre les programmes. Ce paquet particulier contient les ensembles les plus importants de bibliothèques partagées: la bibliothèque standard C et la bibliothèque mathématique standard. Sans ces deux bibliothèques, un système Linux ne fonctionnerait pas. Le paquet glibc contient également un support de langue nationale (locale). 

7
Sandy

Oui, c'est l'implémentation des fonctions de bibliothèque standard.

Plus spécifiquement, il s’agit de l’implémentation pour tous les systèmes GNU et presque tous les systèmes * NIX utilisant le noyau Linux.

2
user529758

Voici quelques points de vue pratiques: