GNU C Library

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, joka 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

Aiheesta muualla 
 Projektin kotisivu
 libc(3lib) posix man page

GNU
Ohjelmakirjastot