GNU C-bibliotheek
glibc | |
---|---|
![]() | |
Basis data | |
ontwikkelaar | Stichting Vrije Software |
Jaar van uitgave | 1987 |
Huidige versie | 2,34[1] ( 2 augustus 2021 ) |
besturingssysteem | Unix , Linux |
programmeertaal | C. |
categorie | Runtime bibliotheek Standaard bibliotheek |
Licentie | LGPL |
Duits sprekend | Ja |
gnu.org/software/libc/ |
glibc , de GNU C-bibliotheek , is een gratis implementatie van de C-standaardbibliotheek die is ontwikkeld door het GNU Project samen met de GNU Compiler Collection .
De glibc valt onder de LGPL , waardoor de bibliotheek kan worden gebruikt met niet-vrije software. De glibc-bibliotheek is een van de meest fundamentele en belangrijke bibliotheken van Unix-besturingssystemen.
eigenschappen
Een van de ontwerpdoelen van glibc is overdraagbaarheid over verschillende softwareplatforms, dus het is ook beschikbaar voor een aantal besturingssystemen . Sommige besturingssystemen, waaronder GNU / Linux , gebruiken glibc als hun officiële standaard C-bibliotheek. De meeste glibc-bibliotheken zijn ook geschreven in C, maar runtime-kritieke routines gebruiken assembler- code.
Functionaliteit
De glibc biedt de functionaliteit die vereist is in de Single UNIX-specificatie , POSIX (1c, 1d en 1j), evenals delen van de ISO C99 , Berkeley Unix (BSD) Interface, de System V Interface Definition (SVID) en de X / Open Portability Guide (XPG) , uitgave 4.2, met alle extensies die gebruikelijk zijn voor XSI (X / Open System Interface)-compatibele systemen met alle X / Open-Unix-extensies.
Naast de functies die de C- normen vereisen, biedt het ook een aantal (niet-gestandaardiseerde) uitbreidingen.
kritiek
De universaliteit en de focus op het x86- hardwareplatform [2] [3] is ook het grootste punt van kritiek op glibc. Door de hoeveelheid code die moet worden geïntegreerd, worden programma's die aan glibc zijn gekoppeld onnodig groot [4] en dus potentieel traag, andere platforms worden helemaal niet ondersteund. Een aantal projecten hebben zich daarom toegelegd op het idee om alternatieven voor glibc te ontwikkelen, de bekendste zijn uClibc en diet libc . Door ze te beperken tot de - vanuit het oogpunt van de critici - "essentiële dingen", zijn deze implementaties aanzienlijk kleiner voor de voltooide binaire programma's, maar niet elk glibc-programma kan ook worden gekoppeld aan deze alternatieve bibliotheken (bijvoorbeeld omdat ze glibc gebruiken functies die ontbreken in de andere bibliotheken), of het gedraagt zich onverwachts tijdens de uitvoering. De lean libc-implementaties zijn vooral nuttig voor embedded systemen .
verhaal
Onderhouder
De glibc CVS- repository wordt sinds 2001 gehost door Red Hat en wordt bijna uitsluitend onderhouden door Ulrich Drepper ( beheerder ). [5] Daarnaast werden actuele snapshots beschikbaar gesteld in de FTP- archieven en hun mirrorservers . Dit was een goede match voor de gemeenschap, aangezien one z. B. vanwege beperkende firewalls geen toegang tot internet vanaf waar dan ook via CVS.
Rond 2001 werd een stuurgroep voor het glibc-project opgericht [6] , waarover maatschappelijke controverse bestond. Ulrich Drepper beschreef het proces publiekelijk als een poging tot een " vijandige overname " door Richard Stallman , die was mislukt. [7] [8] [9]
Sinds mei 2009 wordt de glibc onderhouden als een Git- repository bij Sourceware . [10]
glibc 2.3
Een aantal verbeteringen zijn geïntegreerd met glibc 2.3, waarvan de belangrijkste de vervanging is van de oude Linux threading-extensie linuxthreads door de Native POSIX Thread Library (NPTL), die, net als glibc zelf, is ontwikkeld door Red Hat . In samenwerking met Linux-kernel 2.6 en hoger maakt de NPTL een aanzienlijke verbetering van de threading- prestaties mogelijk en is POSIX- compatibel. Omdat het achterwaarts compatibel wilde zijn, is voor programma's die voldoen aan het POSIX-gedrag niet de oude implementatie geïnstrueerd om Linuxthreads beschikbaar te houden, je hebt het nu maar expliciet via linker- richtlijn Request (z. B. LD_ASSUME_KERNEL=2.4.22
). De glibc zelf is ook neerwaarts compatibel in de belangrijkste functies. De kleinste gemene deler is de functionaliteit van libc6 , daarom worden de termen glibc en libc6 vaak als synoniemen voor elkaar gebruikt (op Alpha- en IA-64- architecturen worden de bibliotheken om historische redenen libc6.1 genoemd, maar bieden ze dezelfde functionaliteit ).
EGLIBC-vork
Vanwege een gebrek aan focus van glibc-compatibiliteit met embedded systemen [3] , met name ARM-processors , en problemen met de afhandeling van de projectmanager, Ulrich Drepper in bugrapporten en ingediende correcties één werd afgesplitst (fork) creëerde het project genaamd eglibc . [11] Volgens de zelfbeoordeling van de ontwikkelaars is eglibc geen klassieke fork, maar willen de ontwikkelaars de wijzigingen die door glibc zijn aangebracht overnemen, maar ook patches accepteren die hun weg niet naar glibc hebben gevonden. [12] Hiermee streeft eglibc naar het doel om vriendelijker te zijn voor ontwikkelaars en om embedded processors beter te ondersteunen. Debian was de eerste grote Linux-distributie die overstapte naar deze implementatie, maar schakelde in juni 2014 weer over op glibc, omdat het EGLIBC-project zijn missie als vervuld en opgelost zag. [13] [14] [15] Ubuntu gebruikt EGLIBC vanaf versie 9.10. [16]
geschiedenis
De publicatiedata zijn voor zover mogelijk overgenomen van de officiële FTP-server. [17]
versie | datum | Opmerkingen |
---|---|---|
1.0 | maart 1992 | |
1.x | 1992-1994 | |
1.09 | november 1994 | |
2.0 | februari 1997 | |
2.1 | mei 1999 | |
2.2 | januari 2001 | Ondersteuning voor grote bestanden . [18] |
2.3 | oktober 2002 | Native POSIX- threadbibliotheek (NPTL) |
2.4 | 6 maart 2006 | |
2.5 | 29 september 2006 | |
2.6 | 17 mei 2007 | |
2.7 | 19 oktober 2007 | |
2.8 | 11 april 2008 | |
2.9 | 10 maart 2009 | |
2.10 | mei 2009 (?) | Datum van versie 2.10.1 |
2.11 | 3 november 2009 | |
2.12 | Augustus 2010 (?) | Datum van versie 2.12.1 |
2.13 | 1 februari 2011 (?) | |
2.14 | 1 juni 2011 | |
2.15 | 21 maart 2012 | |
2.16 | 30 juni 2012 | |
2.17 | 25 december 2012 | |
2.18 | 12 augustus 2013 | |
2.19 | 8 februari 2014 | |
2.20 | 7 september 2014 | |
2.21 | 6 februari 2015 | |
2.22 | 5 augustus 2015 | |
2.23 | 19 februari 2016 | |
2.24 | 4 augustus 2016 | |
2.25 | 5 februari 2017 | |
2.26 | 2 augustus 2017 | |
2.27 | 1 februari 2018 | |
2.28 | 1 augustus 2018 | |
2.29 | 31 januari 2019 | |
2.30 | 1 augustus 2019 | |
2.31 | 1 februari 2020 | |
2.32 | 5 augustus 2020 | |
2.33 | 1 februari 2021 |
Zie ook
literatuur
- Sandra Loosemore et al.: The GNU C Library: Application Fundamentals (voor GNU C Libraries Version 2.3.x) (PDF; 2,8 MB) . GNU Press, Boston, 2004. ISBN 978-1-8821142-2-1 .
web links
- Officiële website van het GNU-project op glibc
- De referentiehandleiding van de GNU C-bibliotheek
- De glibc-wiki
- Vergelijking van C / POSIX standaard bibliotheekimplementaties voor Linux - glibc 2.19 vergeleken met compacte alternatieven
Individueel bewijs
- ↑ Carlos O'Donell: De GNU C Library versie 2.34 is nu beschikbaar . 2 augustus 2021 (toegankelijk op 3 augustus 2021).
- ↑ Bug 5070 - glibc-2.5: ../sysdeps/unix/sysv/linux/check_pf.c:68: make_request: bevestiging mislukt
- ↑ a b Ulrich Drepper: Dictatuur van de minderheden ( Engels ) udrepper.livejournal.com. 25 mei 2005. Ontvangen op 15 januari 2012: “ Welke architecturen zijn de moeite waard om te ondersteunen? [...]. We moeten niet alleen zoeken naar irrelevante (welk percentage geeft om Vax, PARisc) ondersteuning, we moeten ook kijken naar de mate van toegevoegde complexiteit die de ondersteuning vereist. Sommige ABI's zijn gewoon opzettelijk gedefinieerd om anders te zijn dan andere (zie IA-64), wat enorme inspanningen vereist. Er zijn ook aanzienlijk uiteenlopende mogelijkheden (bijvoorbeeld het ontbreken van atomaire operaties in te veel architecturen). Dit leidt maar al te vaak tot onnodig verminkte code, aangezien het erg moeilijk is om code te schrijven op een manier die optimaal gebruik in alle situaties mogelijk maakt. De oplossing moet zijn om de ondersteuning te beperken tot slechts een handvol architecturen die in het project worden ondersteund. Alle andere ondersteuning moet buiten de boom gebeuren en daarom moet al het werk door de speciale belangengroepen worden gedaan. Ik wil niet zeggen dat we al deze punten perfect volgen, maar voor een groot project komt glibc hier zeker het dichtst bij. "
- ↑ Linus Torvalds: Posten op de glibc-mailinglijst , 9 januari 2002 19:02:37 PM
- ↑ Jonathan Corbet: Een keerpunt voor GNU libc . LWN.net. 28 maart 2012 .: " Van de bijna 19.000 commits die zijn gevonden in de git-repository van het project (die wijzigingen bevat tot 1995), zijn er meer dan 12.000 gemaakt door Ulrich. "
- ↑ glibc homepage .: "In 2001 werd de GNU C Library Steering Committee ... gevormd en bestaat deze momenteel uit Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath en Andreas Schwab."
- ^ Ulrich Drepper: RMS is weer bezig . sourceware.org. 26 juni 2000. Opgehaald op 20 november 2015: “ Een paar weken geleden begon RMS de volgende aanval op mij (een enkele mail, gevolgd door indirecte pogingen om invloed te krijgen, gevolgd door nog een mail vandaag). De essentie is dat hij klaagt dat ik het "GNU-beleid" niet volg en daarom moet worden vervangen door een stuurgroep waarvan ik deel zou kunnen uitmaken. Sommigen van jullie (namelijk Roland en Andreas S.) weten dit waarschijnlijk omdat hij beiden heeft voorgesteld als andere leden van de commissie. Daarnaast stond Mark Brown op de lijst (ik ken iemand met deze naam bij IBM die ook in deze groep zou passen, maar ik weet niet zeker of hij het echt is.) Hoe dan ook, ik wijs dit volledig af. Het helpt helemaal niet, het tegendeel is waar. Ten eerste, ik ben me niet bewust van enig essentieel beleid dat ik overtreed. De enige is dat ik geen bevelen van RMS opvolg die duidelijk politieke bedoelingen hebben (wat natuurlijk heiligschennis is) en mogelijk dat ik niet om Winblowz geef (als dat laatste al telt). Dit zal op geen enkele manier veranderen. "
- ↑ Ulrich Drepper: glibc 2.2.4 . sourceware.com. 15 augustus 2001. Ontvangen op 29 november 2015: “ En nu voor een paar niet zo leuke dingen. Stallman probeerde onlangs wat ik een vijandige overname van de glibc-ontwikkeling zou noemen. Hij probeerde achter mijn rug om samen te zweren en de andere hoofdontwikkelaars over te halen de controle over te nemen, zodat hij uiteindelijk de controle heeft en kan dicteren wat hem goeddunkt. Deze poging mislukte maar hij bleef mensen overal onder druk zetten en het werd echt lelijk. Uiteindelijk heb ik ingestemd met de oprichting van een zogenaamde "stuurgroep" (SC). "
- ↑ rms-beschuldigd-van-poging tot-glibc-vijandige-overname op slashdot .com op 19 augustus 2001
- ↑ Sourceware-informatie over de glibc-repo
- ↑ http://www.eglibc.org/home
- ↑ http://www.eglibc.org/faq
- ↑ Aurélien Jarno: Debian schakelt over naar EGLIBC ( Engels ) aurel32.net. 5 mei 2009. Ontvangen op 15 januari 2012: " Vriendelijker stroomopwaarts (vooral met betrekking tot embedded architecturen):" Stimuleer samenwerking, communicatie, beleefdheid en respect tussen ontwikkelaars "(in tegenstelling hiermee). "
- Door timothy: Debian schakelt over van Glibc naar Eglibc ( Engels ) Slashdot . 6 mei 2009. Ontvangen 14 januari 2012.
- ↑ Debian schakelt (terug) over naar GLIBC ( Engels ) Aurélien. 19 juni 2014. Ontvangen op 19 juni 2014.
- ↑ http://www.eglibc.org/news
- ↑ http://ftp.gnu.org/gnu/glibc/
- ^ Andreas Jaeger: ondersteuning voor grote bestanden in Linux . SUSE GmbH. 15 februari 2015.