Siirry sisaltoon

GNU C Library

Wikipediasta
GNU C Library

GNU C-kirjaston sijoittuminen sovelluksien ja kayttojarjestelman ytimen valiin.
Kehityshistoria
Vakaa versio 2.43 ()[1]
Kehitystilanne Aktiivinen
Tiedot
Lisenssi GNU Lesser General Public License, versio 2.1 tai myohempi
Aiheesta muualla
Verkkosivusto
Versiohallinta
Infobox OK

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 seka toteuttaa muun muassa BSD:n alustakohtaiset rajapinnat.

Nimi on johdettu alkuperaisesta Unixin libc-kirjastosta. "libc" on yleisesti kaytetty lyhenne "C-kielen standardikirjastolle", joka sisaltaa funktioita kaikille C-kielisille (ja toisinaan muunkielisille) ohjelmille.[3]

Linux-ymparistossa kirjasto toteuttaa kutsut Linux-ytimen jarjestelmakutsuihin.[4] Useissa tapauksissa kirjasto toteuttaa asioita, jotka ohjelman tekija voisi tehda itse.[4] Tietyille toiminnoille kuten ohjelmien kaynnistamiseen, muistin varaamiseen ja tiedostojen kasittelyyn kirjasto kutsuu ytimen toimintoja.[4]

glibc on lisensoitu sallivammalla GNU Lesser General Public License (LGPL) lisenssilla, joka sallii kayton dynaamisena kirjastona. Kirjaston linkitys staattisena kirjastona osaksi ei-vapaata ohjelmatiedostoa ei ole lisenssin mukaista.[5]

Kirjaston kehityksen aloitti Roland McGrath tyoskennellessaan henkiloston jasenena Free Software Foundationille vuonna 1987.[6] Han ilmoitti lopettamisesta yllapitajana 30 vuoden jalkeen vuonna 2017.[7][8] Vuonna 1988 kerrottiin, etta kirjastossa oli lahes taysi tuki ANSI C -standardin funktioille.[9] Vuonna 1992 kerrottiin, etta kirjastossa on kaikki ANSI C-1989 ja POSIX.1-1990 -standardien funktiot ja tyo oli aloitettu POSIX.2-funktioiden lisaamiseen.[10]

Linuxille on ollut oma libc-kirjasto, josta on siirrytty glibc:n kayttoon vuodesta 1997 alkaen.[11] Linuxin libc 4 ja 5 perustuivat glibc:lle, joka ei ollut aktiivisessa kehityksessa tuolloin: glibc 2.0:ssa oli selkeita parannuksia, jonka jalkeen useat Linux-jakelut siirtyivat glibc:n kayttoon.[11]

Versio 2.40 sisaltaa tuen eraille C23-standardin ominaisuuksille. Samassa versiossa on muutettu eraissa tapauksissa kaytetyt tietorakenteet kayttamaan etumerkitonta tyyppia, joka riittaa aikaleimoille vuoteen 2106 saakka.[12]

Versiossa 2.41 on mukana CORE-MATH -projektin toteuttamia matemaattisia funktioita, seka toteutuksia uusille ISO C23 -standardin mukaisille funktioille. CORE-MATH -projekti kehittaa oikealla pyoristyksella matemaattisia funktioita, jotka voidaan liittaa toisiin kirjastoihin. Eri kirjastoissa olevat toteutukset vaihtelevat suorituskyvyltaan ja tarkkuudeltaan.[13][14][15]

Vaihtoehtoiset kirjastot

[muokkaa | muokkaa wikitekstia]

Useita vaihtoehtoisia kirjastoja on myos kehitetty paaasiassa sulautettuihin jarjestelmiin.

GNU libc on sisaltaa useita ominaisuuksia, mika johtaa erityisesti suureen tallennustilan tarpeeseen. Eraassa vertailussa pienin GNU libc:hen staattisesti linkitetty kaannetty 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.[16]

Vaihtoehtoisia c-kirjastoja:

  • EGLIBC[17]
  • uClibc[18]
  • uClibc-ng[19]
  • musl libc[20]
  • dietlibc[21]
  • Newlib[22]
  • picolibc[23]

Android kayttaa Googlen kehittamaa Bionic-C-kirjastoa.[24]

  1. | The GNU C Library version 2.43 is now available, (viitattu ) (englanniksi) . 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. | Andreas K. Huettel: The GNU C Library version 2.40 is now available lists.gnu.org. 22.7.2024. Viitattu 29.8.2024. (englanniksi)
  13. | Andreas K. Huettel: The GNU C Library version 2.41 is now available lwn.net. 30.1.2025. Viitattu 31.1.2025. (englanniksi)
  14. | The CORE-MATH project core-math.gitlabpages.inria.fr. Viitattu 31.1.2025. (englanniksi)
  15. | Brian Gladman, Vincenzo Innocente, John Mather+, Paul Zimmermann: Accuracy of Mathematical Functions in Single, Double, Double Extended, and Quadruple Precision (PDF) members.loria.fr. elokuu 2024. Viitattu 31.1.2025. (englanniksi)
  16. | Comparison of C/POSIX standard library implementations for Linux Eta Labs. Viitattu 26.6.2023.
  17. | http://www.eglibc.org/faq (Arkistoitu - Internet Archive)
  18. | https://www.uclibc.org
  19. | https://uclibc-ng.org
  20. | https://www.musl-libc.org
  21. | http://www.fefe.de/dietlibc/
  22. | https://sourceware.org/newlib/
  23. | picolibc (PDF) static.sched.com. Viitattu 28.9.2021. (englanniksi)
  24. | Bionic C Library Overview dre.vanderbilt.edu. Viitattu 10.2.2020. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstia]