GNU C Library

C-ohjelmointikielen standardikirjasto

GNU C-kirjasto (glibc) on GNU-projektin toteutus C-kielen standardikirjastolle (libc).[2] 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.

GNU C Library
GNU C-kirjaston sijoittuminen sovelluksien ja käyttöjärjestelmän ytimen väliin.
GNU C-kirjaston sijoittuminen sovelluksien ja käyttöjärjestelmän ytimen väliin.
Kehityshistoria
Vakaa versio 2.39 ()[1]
Kehitystilanne Aktiivinen
Tiedot
Lisenssi GNU Lesser General Public License, versio 2.1 tai myöhempi
Aiheesta muualla
Verkkosivusto
Versiohallinta

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.[3]

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

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.[5]

Historia muokkaa

Kirjaston kehityksen aloitti Roland McGrath työskennellessään henkilöstön jäsenenä Free Software Foundationille vuonna 1987.[6] Hän ilmoitti lopettamisesta ylläpitäjänä 30 vuoden jälkeen vuonna 2017.[7][8] Vuonna 1988 kerrottiin, että kirjastossa oli lähes täysi tuki ANSI C -standardin funktioille.[9] 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.[10]

Linuxille on ollut oma libc-kirjasto, josta on siirrytty glibc:n käyttöön vuodesta 1997 alkaen.[11] 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.[11]

Vaihtoehtoiset kirjastot muokkaa

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.[12]

Vaihtoehtoisia c-kirjastoja:

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

Lähteet muokkaa

  1. (en) The GNU C Library version 2.39 is now available, (viitattu ). Tieto on haettu Wikidatasta.
  2. glibc Definition The Linux Information Project. Viitattu 4.11.2017.
  3. https://man7.org/linux/man-pages/man7/libc.7.html
  4. a b c 3. User space and the libc interface win.tue.nl. Viitattu 28.10.202. (englanniksi)
  5. Glibc and static linking lwn.net. Viitattu 4.11.2017. (englanniksi)
  6. https://www.gnu.org/gnu/thegnuproject.html.en
  7. Roland McGrath bows out as glibc maintainer lwn.net. 7.7.2017. Viitattu 28.10.2021. (englanniksi)
  8. Richard Chirgwin: Roland McGrath steps down as glibc maintainer after 30 years theregister.com. 10.7.2017. Viitattu 31.3.2024. (englanniksi)
  9. GNU's Bulletin, vol. 1 no. 4, February, 1988 gnu.org. Viitattu 31.3.2024. (englanniksi)
  10. GNU's Bulletin, vol. 1 no. 12, January, 1992 gnu.org. Viitattu 31.3.2024. (englanniksi)
  11. a b A Technical Comparison of glibc 2.x With Legacy System Libraries people.redhat.com. Arkistoitu . Viitattu 28.10.2021. (englanniksi)
  12. Comparison of C/POSIX standard library implementations for Linux Eta Labs. Viitattu 26.6.2023.
  13. http://www.eglibc.org/faq (Arkistoitu – Internet Archive)
  14. https://www.uclibc.org
  15. https://uclibc-ng.org
  16. https://www.musl-libc.org
  17. http://www.fefe.de/dietlibc/
  18. https://sourceware.org/newlib/
  19. picolibc (PDF) static.sched.com. Viitattu 28.9.2021. (englanniksi)
  20. Bionic C Library Overview dre.vanderbilt.edu. Viitattu 10.2.2020. (englanniksi) 

Aiheesta muualla muokkaa