GNU C-bibliotheek

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
glibc

Heckert GNU white.svg
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
Oudere versie; niet langer ondersteund: 1.0 maart 1992
Oudere versie; niet langer ondersteund: 1.x 1992-1994
Oudere versie; niet langer ondersteund: 1.09 november 1994
Oudere versie; nog steeds ondersteund: 2.0 februari 1997
Oudere versie; nog steeds ondersteund: 2.1 mei 1999
Oudere versie; nog steeds ondersteund: 2.2 januari 2001 Ondersteuning voor grote bestanden . [18]
Oudere versie; nog steeds ondersteund: 2.3 oktober 2002 Native POSIX- threadbibliotheek (NPTL)
Oudere versie; nog steeds ondersteund: 2.4 6 maart 2006
Oudere versie; nog steeds ondersteund: 2.5 29 september 2006
Oudere versie; nog steeds ondersteund: 2.6 17 mei 2007
Oudere versie; nog steeds ondersteund: 2.7 19 oktober 2007
Oudere versie; nog steeds ondersteund: 2.8 11 april 2008
Oudere versie; nog steeds ondersteund: 2.9 10 maart 2009
Oudere versie; nog steeds ondersteund: 2.10 mei 2009 (?) Datum van versie 2.10.1
Oudere versie; nog steeds ondersteund: 2.11 3 november 2009
Oudere versie; nog steeds ondersteund: 2.12 Augustus 2010 (?) Datum van versie 2.12.1
Huidige versie: 2.13 1 februari 2011 (?)
Huidige versie: 2.14 1 juni 2011
Huidige versie: 2.15 21 maart 2012
Huidige versie: 2.16 30 juni 2012
Huidige versie: 2.17 25 december 2012
Huidige versie: 2.18 12 augustus 2013
Huidige versie: 2.19 8 februari 2014
Huidige versie: 2.20 7 september 2014
Huidige versie: 2.21 6 februari 2015
Huidige versie: 2.22 5 augustus 2015
Huidige versie: 2.23 19 februari 2016
Huidige versie: 2.24 4 augustus 2016
Huidige versie: 2.25 5 februari 2017
Huidige versie: 2.26 2 augustus 2017
Huidige versie: 2.27 1 februari 2018
Huidige versie: 2.28 1 augustus 2018
Huidige versie: 2.29 31 januari 2019
Huidige versie: 2.30 1 augustus 2019
Huidige versie: 2.31 1 februari 2020
Huidige versie: 2.32 5 augustus 2020
Huidige versie: 2.33 1 februari 2021

Zie ook

literatuur

web links

Individueel bewijs

  1. Carlos O'Donell: De GNU C Library versie 2.34 is nu beschikbaar . 2 augustus 2021 (toegankelijk op 3 augustus 2021).
  2. Bug 5070 - glibc-2.5: ../sysdeps/unix/sysv/linux/check_pf.c:68: make_request: bevestiging mislukt
  3. 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. "
  4. Linus Torvalds: Posten op de glibc-mailinglijst , 9 januari 2002 19:02:37 PM
  5. 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. "
  6. 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."
  7. ^ 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. "
  8. 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). "
  9. rms-beschuldigd-van-poging tot-glibc-vijandige-overname op slashdot .com op 19 augustus 2001
  10. Sourceware-informatie over de glibc-repo
  11. http://www.eglibc.org/home
  12. http://www.eglibc.org/faq
  13. 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). "
  14. Door timothy: Debian schakelt over van Glibc naar Eglibc ( Engels ) Slashdot . 6 mei 2009. Ontvangen 14 januari 2012.
  15. Debian schakelt (terug) over naar GLIBC ( Engels ) Aurélien. 19 juni 2014. Ontvangen op 19 juni 2014.
  16. http://www.eglibc.org/news
  17. http://ftp.gnu.org/gnu/glibc/
  18. ^ Andreas Jaeger: ondersteuning voor grote bestanden in Linux . SUSE GmbH. 15 februari 2015.