GNU C Library
GNU C-kirjasto (glibc) on GNU-projektin toteutus C-kielen standardikirjastolle.[1] 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.
![](../I/Linux_kernel_System_Call_Interface_and_glibc.svg.png.webp)
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.[2]
Linux-ympäristössä kirjasto toteuttaa kutsut Linux-ytimen järjestelmäkutsuihin.[3] Useissa tapauksissa kirjasto toteuttaa asioita, jotka ohjelman tekijä voisi tehdä itse.[3] Tietyille toiminnoille kuten ohjelmien käynnistämiseen, muistin varaamiseen ja tiedostojen käsittelyyn kirjasto kutsuu ytimen toimintoja.[3]
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.[4]
Historia
Kirjaston kehityksen aloitti Roland McGrath, joka ilmoitti lopettamisesta ylläpitäjänä 30 vuoden jälkeen vuonna 2017.[5] Linuxille on ollut oma libc-kirjasto, josta on siirrytty glibc:n käyttöön vuodesta 1997 alkaen.[6] 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.[6]
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 on kooltaan 662 kilotavua. Sulautettuihin tarkoitetuilla uClibc:lla ohjelma on 5 kilotavua ja dietlibc:lla 0,2 kilotavua.[7]
Vaihtoehtoisia c-kirjastoja:
Lähteet
- glibc Definition The Linux Information Project. Viitattu 4.11.2017.
- https://man7.org/linux/man-pages/man7/libc.7.html
- 3. User space and the libc interface win.tue.nl. Viitattu 28.10.202. (englanniksi)
- Glibc and static linking lwn.net. Viitattu 4.11.2017. (englanniksi)
- Roland McGrath bows out as glibc maintainer lwn.net. 7.7.2017. Viitattu 28.10.2021. (englanniksi)
- A Technical Comparison of glibc 2.x With Legacy System Libraries people.redhat.com. Arkistoitu . Viitattu 28.10.2021. (englanniksi)
- Comparison of C/POSIX standard library implementations for Linux Eta Labs.
- http://www.eglibc.org/faq
- https://www.uclibc.org
- https://uclibc-ng.org
- https://www.musl-libc.org
- http://www.fefe.de/dietlibc/
- https://sourceware.org/newlib/
- picolibc (PDF) static.sched.com. Viitattu 28.9.2021. (englanniksi)
- Bionic C Library Overview dre.vanderbilt.edu. Viitattu 10.2.2020. (englanniksi)
Aiheesta muualla
- Projektin kotisivu
- libc(3lib) posix man page