Qu'est-ce que la GLIBC? À quoi sert-il?

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

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

23
demandé sur David Arenburg 2012-07-13 01:14:12

4 réponses

C'est l'implémentation de bibliothèque C Standard décrite dans les normes C ainsi que 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,C11. Il comprend des macros, des symboles, des implémentations de fonctions, etc.(printf(),la fonction malloc (), etc)

2) bibliothèque standard POSIX. La colle "userland" des appels système. (ouvrir (), lire () etc. En fait, la glibc n'implémente pas les appels système. le noyau le fait. Mais la glibc fournit l'interface utilisateur land aux services fournis par le noyau afin que l'application utilisateur puisse utiliser un appel système comme une fonction ordinaire.

3) aussi des choses non standard mais utiles.

"utiliser la force, lire la source "

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

(j'ai été récemment assez éclairé quand j'ai regardé à travers malloc.c dans la glibc)

38
répondu Aftnix 2018-07-27 08:08:15

, Il existe plusieurs implémentations de la norme. Glibc est l'implémentation que la plupart des Linux utilisent, mais il y en a d'autres. La Glibc contient également (comme L'indique Aftnix) les fonctions glue qui configurent la scène pour les sauts dans le noyau (également appelées appels système). Beaucoup de "fonctions" de la glibc ne font pas le travail réel mais se délèguent seulement au noyau.

Pour lire la source de la Glibc, il suffit de google pour cela. Il y a une myriade de sites qui le portent, et aussi plusieurs variation.

Windows utilise la propre implémentation de Microsoft, que je crois s'appelle 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.

7
répondu jforberg 2012-07-12 22:03:39

Le paquet glibc contient des bibliothèques standard qui sont utilisées par plusieurs programmes sur le système. Afin d'économiser de l'espace disque et de la mémoire, ainsi que pour faciliter la mise à niveau, le code système commun iskept en un seul endroit et partagé entre les programmes. Ce paquet particulier contient les ensembles les plus importants de bibliothèques partagées: la bibliothèque C standard et la bibliothèque mathématique standard. Sans ces deux bibliothèques, un système Linux ne fonctionnera pas. Le paquet glibc contient également la langue nationale les paramètres régionaux de soutien.

6
répondu Sandy 2012-12-23 12:02:21

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

Plus précisément, c'est l'implémentation pour tous les systèmes GNU et dans presque tous les systèmes * NIX qui utilisent le noyau Linux.

1
répondu ardent 2012-07-12 21:25:29