GNU C-kirjaston sijoittuminen sovelluksien ja käyttöjärjestelmän ytimen väliin.
**GNU C-kirjasto** (**glibc**) on GNU-projektin toteutus C-kielen standardikirjastolle. Kirjasto toteuttaa C-kielen alustariippuvat osat ja pyrkii seuraamaan olennaisia standardeja kuten ISO C, POSIX ja IEEE 754 sekä toteuttaa muun muassa BSD:n alustakohtaiset rajapinnat.

Nimi on johdettu alkuperäisestä Unixin libc-kirjastosta. "libc" on yleisesti käytetty lyhenne "C-kielen standardikirjastolle", joka sisältää funktioita kaikille C-kielisille (ja toisinaan muunkielisille) ohjelmille.

Linux-ympäristössä kirjasto toteuttaa kutsut Linux-ytimen järjestelmäkutsuihin. Useissa tapauksissa kirjasto toteuttaa asioita, jotka ohjelman tekijä voisi tehdä itse. Tietyille toiminnoille kuten ohjelmien käynnistämiseen, muistin varaamiseen ja tiedostojen käsittelyyn kirjasto kutsuu ytimen toimintoja.

glibc on lisensoitu sallivammalla GNU Lesser General Public License (LGPL) lisenssillä, joka sallii käytön dynaamisena kirjastona. Kirjaston linkitys staattisena kirjastona osaksi ei-vapaata ohjelmatiedostoa ei ole lisenssin mukaista.

Historia
--------

Kirjaston kehityksen aloitti Roland McGrath työskennellessään Free Software Foundationille vuonna 1987. Hän ilmoitti lopettamisesta ylläpitäjänä 30 vuoden jälkeen vuonna 2017.
Linuxille on ollut oma libc-kirjasto, josta on siirrytty glibc:n käyttöön vuodesta 1997 alkaen. Linuxin libc 4 ja 5 perustuivat glibc:lle, joka ei ollut aktiivisessa kehityksessä tuolloin: glibc 2.0:ssa oli selkeitä parannuksia, jonka jälkeen useat Linux-jakelut siirtyivät glibc:n käyttöön.

Vaihtoehtoiset kirjastot
------------------------

Useita vaihtoehtoisia kirjastoja on myös kehitetty pääasiassa sulautettuihin järjestelmiin.

GNU libc on sisältää useita ominaisuuksia, mikä johtaa erityisesti suureen tallennustilan tarpeeseen.
Eräässä vertailussa pienin GNU libc:hen staattisesti linkitetty käännetty C-kielinen ohjelma (kokonaisuudessaan: `int main() {}`) on kooltaan 662 kilotavua.
Sulautettuihin tarkoitetuilla uClibc:lla ohjelma on 5 kilotavua, musl:lla 1,8 kilotavua ja dietlibc:lla 0,2 kilotavua.

Vaihtoehtoisia c-kirjastoja:

* EGLIBC
* uClibc
* uClibc-ng
* musl libc
* dietlibc
* Newlib
* picolibc

Android käyttää Googlen kehittämää Bionic-C-kirjastoa.

Lähteet
-------

1. ↑  glibc Definition The Linux Information Project. Viitattu 4.11.2017.
2. ↑
3. 1 2 3  3. User space and the libc interface *win.tue.nl*. Viitattu 28.10.202. (englanniksi)
4. ↑  Glibc and static linking *lwn.net*. Viitattu 4.11.2017. (englanniksi)
5. ↑  Roland McGrath bows out as glibc maintainer *lwn.net*.  7.7.2017. Viitattu 28.10.2021. (englanniksi)
6. 1 2  A Technical Comparison of glibc 2.x With Legacy System Libraries *people.redhat.com*.  Arkistoitu. Viitattu 28.10.2021. (englanniksi)
7. ↑  Comparison of C/POSIX standard library implementations for Linux Eta Labs. Viitattu 26.6.2023.
8. ↑   (Arkistoitu – Internet Archive)
9. ↑
10. ↑
11. ↑
12. ↑
13. ↑
14. ↑  picolibc (PDF) *static.sched.com*. Viitattu 28.9.2021. (englanniksi)
15. ↑  Bionic C Library Overview *dre.vanderbilt.edu*. Viitattu 10.2.2020. (englanniksi)

Aiheesta muualla
----------------

* Projektin kotisivu
* libc(3lib) posix man page