GNU C Library
| 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]
Historia
[muokkaa | muokkaa wikitekstia]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]
Lahteet
[muokkaa | muokkaa wikitekstia]- | The GNU C Library version 2.43 is now available, (viitattu ) (englanniksi) . Tieto on haettu Wikidatasta.
- | glibc Definition The Linux Information Project. Viitattu 4.11.2017.
- | https://man7.org/linux/man-pages/man7/libc.7.html
- | a b c 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)
- | https://www.gnu.org/gnu/thegnuproject.html.en
- | Roland McGrath bows out as glibc maintainer lwn.net. 7.7.2017. Viitattu 28.10.2021. (englanniksi)
- | Richard Chirgwin: Roland McGrath steps down as glibc maintainer after 30 years theregister.com. 10.7.2017. Viitattu 31.3.2024. (englanniksi)
- | GNU's Bulletin, vol. 1 no. 4, February, 1988 gnu.org. Viitattu 31.3.2024. (englanniksi)
- | GNU's Bulletin, vol. 1 no. 12, January, 1992 gnu.org. Viitattu 31.3.2024. (englanniksi)
- | a b A Technical Comparison of glibc 2.x With Legacy System Libraries people.redhat.com. Arkistoitu Viitattu 28.10.2021. (englanniksi)
- | Andreas K. Huettel: The GNU C Library version 2.40 is now available lists.gnu.org. 22.7.2024. Viitattu 29.8.2024. (englanniksi)
- | Andreas K. Huettel: The GNU C Library version 2.41 is now available lwn.net. 30.1.2025. Viitattu 31.1.2025. (englanniksi)
- | The CORE-MATH project core-math.gitlabpages.inria.fr. Viitattu 31.1.2025. (englanniksi)
- | 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)
- | Comparison of C/POSIX standard library implementations for Linux Eta Labs. Viitattu 26.6.2023.
- | http://www.eglibc.org/faq (Arkistoitu - Internet Archive)
- | 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
[muokkaa | muokkaa wikitekstia]- Projektin kotisivu
- libc(3lib) posix man page