GNU C Library

GNU C-kirjasto (glibc) on GNU-projektin toteutus C-kielen standardikirjastolle (libc). 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.https://man7.org/linux/man-pages/man7/libc.7.html

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 henkilöstön jäsenenä Free Software Foundationille vuonna 1987.https://www.gnu.org/gnu/thegnuproject.html.en Hän ilmoitti lopettamisesta ylläpitäjänä 30 vuoden jälkeen vuonna 2017.
Vuonna 1988 kerrottiin, että kirjastossa oli lähes täysi tuki ANSI C -standardin funktioille. Vuonna 1992 kerrottiin, että kirjastossa on kaikki ANSI C-1989 ja POSIX.1-1990 -standardien funktiot ja työ oli aloitettu POSIX.2-funktioiden lisäämiseen.

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.

Versio 2.40 sisältää tuen eräille C23-standardin ominaisuuksille. Samassa versiossa on muutettu eräissä tapauksissa käytetyt tietorakenteet käyttämään etumerkitöntä tyyppiä, joka riittää aikaleimoille vuoteen 2106 saakka.

Versiossa 2.41 on mukana CORE-MATH -projektin toteuttamia matemaattisia funktioita, sekä toteutuksia uusille ISO C23 -standardin mukaisille funktioille. CORE-MATH -projekti kehittää oikealla pyöristyksellä matemaattisia funktioita, jotka voidaan liittää toisiin kirjastoihin. Eri kirjastoissa olevat toteutukset vaihtelevat suorituskyvyltään ja tarkkuudeltaan.

 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:
 EGLIBChttp://www.eglibc.org/faq 
 uClibchttps://www.uclibc.org
 uClibc-nghttps://uclibc-ng.org
 musl libchttps://www.musl-libc.org
 dietlibchttp://www.fefe.de/dietlibc/
 Newlibhttps://sourceware.org/newlib/
 picolibc

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

 Lähteet 

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

Luokka:GNU
Luokka:Ohjelmakirjastot