GNU C Library

C-ohjelmointikielen standardikirjasto From Wikipedia, the free encyclopedia

GNU C Library
Remove ads

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.

Pikafaktoja Kehityshistoria, Tiedot ...

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]

Remove ads

Historia

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]

Versio 2.40 sisältää tuen eräille C23-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]

Versiossa 2.41 on mukana CORE-MATH -projektin toteuttamia matemaattisia funktioita, sekä toteutuksia uusille ISO C23 -standardin mukaisille funktioille. CORE-MATH -projekti kehittää oikealla pyöristyksellä matemaattisia funktioita, jotka voidaan liittää toisiin kirjastoihin. Eri kirjastoissa olevat toteutukset vaihtelevat suorituskyvyltään ja tarkkuudeltaan.[13][14][15]

Remove ads

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 (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:

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

Remove ads

Lähteet

Aiheesta muualla

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads