GNU C Library
GNU C Library | |
---|---|
![]() GNU C-kirjaston sijoittuminen sovelluksien ja käyttöjärjestelmän ytimen väliin. |
|
Kehityshistoria | |
Vakaa versio | 2.40 ()[1] |
Kehitystilanne | Aktiivinen |
Tiedot | |
Lisenssi | GNU Lesser General Public License, versio 2.1 tai myöhempi |
Aiheesta muualla | |
Verkkosivusto | |
Versiohallinta |
GNU C-kirjasto(glibc) onGNU-projektin toteutusC-kielenstandardikirjastolle(libc).[2]Kirjastototeuttaa C-kielen alustariippuvat osat ja pyrkii seuraamaan olennaisia standardeja kutenISO C,POSIXjaIEEE 754sekä toteuttaa muun muassaBSD:nalustakohtaiset rajapinnat.
Nimi on johdettu alkuperäisestäUnixinlibc-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 kutsutLinux-ytimenjä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 sallivammallaGNU Lesser General Public License(LGPL) lisenssillä, joka sallii käytön dynaamisena kirjastona. Kirjaston linkitys staattisena kirjastona osaksi ei-vapaataohjelmatiedostoaei ole lisenssin mukaista.[5]
Historia
[muokkaa|muokkaa wikitekstiä]Kirjaston kehityksen aloitti Roland McGrath työskennellessään henkilöstön jäsenenäFree Software Foundationillevuonna 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 tukiANSI 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]
Versio 2.40 sisältää tuen eräilleC23-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.[12]
Vaihtoehtoiset kirjastot
[muokkaa|muokkaa wikitekstiä]Useita vaihtoehtoisia kirjastoja on myös kehitetty pääasiassasulautettuihin 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.[13]
Vaihtoehtoisia c-kirjastoja:
Androidkäyttää Googlen kehittämääBionic-C-kirjastoa.[21]
Lähteet
[muokkaa|muokkaa wikitekstiä]- ↑The GNU C Library version 2.40 is now available,(viitattu).Tieto on haettuWikidatasta.
- ↑glibc DefinitionThe Linux Information Project. Viitattu 4.11.2017.
- ↑https://man7.org/linux/man-pages/man7/libc.7.html
- ↑abc3. User space and the libc interfacewin.tue.nl.Viitattu 28.10.202.(englanniksi)
- ↑Glibc and static linkinglwn.net.Viitattu 4.11.2017.(englanniksi)
- ↑https://www.gnu.org/gnu/thegnuproject.html.en
- ↑Roland McGrath bows out as glibc maintainerlwn.net.7.7.2017. Viitattu 28.10.2021.(englanniksi)
- ↑Richard Chirgwin:Roland McGrath steps down as glibc maintainer after 30 yearstheregister.com.10.7.2017. Viitattu 31.3.2024.(englanniksi)
- ↑GNU's Bulletin, vol. 1 no. 4, February, 1988gnu.org.Viitattu 31.3.2024.(englanniksi)
- ↑GNU's Bulletin, vol. 1 no. 12, January, 1992gnu.org.Viitattu 31.3.2024.(englanniksi)
- ↑abA Technical Comparison of glibc 2.x With Legacy System Librariespeople.redhat.com.Arkistoitu.Viitattu 28.10.2021.(englanniksi)
- ↑Andreas K. Huettel:The GNU C Library version 2.40 is now availablelists.gnu.org.22.7.2024. Viitattu 29.8.2024.(englanniksi)
- ↑Comparison of C/POSIX standard library implementations for LinuxEta 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 Overviewdre.vanderbilt.edu.Viitattu 10.2.2020.(englanniksi)
Aiheesta muualla
[muokkaa|muokkaa wikitekstiä]- Projektin kotisivu
- libc(3lib)posix man page