Zum Inhalt springen

GNU-C-Bibliothek

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Glibc)
glibc

[[Datei:Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.|150px]]
Basisdaten

Maintainer Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
Entwickler Free Software Foundation
Erscheinungsjahr Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
Aktuelle Version Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
(Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.)
Aktuelle Vorabversion Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
(Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.)
Betriebssystem Unix, Linux
Programmier­sprache Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
Kategorie Laufzeitbibliothek
Standardbibliothek
Lizenz LGPL
deutschsprachig ja
gnu.org/software/libc/

glibc, die GNU C-Bibliothek, ist eine freie Implementierung der C-Standard-Bibliothek, die vom GNU-Projekt zusammen mit der GNU Compiler Collection entwickelt wird.

Die glibc steht unter der LGPL, was den Einsatz der Bibliothek bei nicht freier Software ermöglicht. Die glibc-Bibliothek gehört zu den fundamentalsten und wichtigsten Bibliotheken von unixoiden Betriebssystemen.

Eigenschaften[Bearbeiten]

Eines der Designziele der glibc ist Portabilität über verschiedene Softwareplattformen, daher ist sie auch für eine Reihe von Betriebssystemen verfügbar. Einige Betriebssysteme, darunter GNU/Linux, benutzen die glibc als ihre offizielle Standard-C-Bibliothek. Die Bibliotheken der glibc sind selbst zum größten Teil auch in C geschrieben, laufzeitkritische Routinen verwenden jedoch Assembler-Code.

Funktionalität[Bearbeiten]

Die glibc stellt die in der Single UNIX Specification, POSIX (1c, 1d, und 1j) geforderte Funktionalität bereit, zusätzlich Teile der ISO C99, Berkeley Unix (BSD) Interface, der System V Interface Definition (SVID) und der X/Open Portability Guide (XPG), Issue 4.2, mit allen Erweiterungen üblich für XSI-(X/Open System Interface)-konforme Systeme mit allen X/Open-Unix-Erweiterungen.

Zusätzlich zu den von den C-Standards geforderten Funktionen bietet sie auch eine Reihe von (nicht standardisierten) Erweiterungen.

Kritik[Bearbeiten]

Ihre Universalität und ihr Fokus auf die x86-Hardware-Plattform<ref>Bug 5070 - glibc-2.5: ../sysdeps/unix/sysv/linux/check_pf.c:68: make_request: Assertion fails</ref><ref name="drepper" /> ist zugleich auch der größte Kritikpunkt an der glibc. Durch die Menge des einzubindenden Codes werden gegen die glibc gelinkte Programme unnötig groß<ref>Linus Torvalds: Posting to the glibc mailing list, 9. Januar 2002 19:02:37</ref> und damit potenziell langsam, andere Plattformen werden gar nicht unterstützt. Eine Reihe von Projekten hat sich daher der Idee verschrieben, Alternativen zu glibc zu entwickeln, die bekanntesten sind uClibc und diet libc. Durch Beschränkung auf die – aus Sicht der Kritiker – „wesentlichen Dinge“ sind diese Implementierungen deutlich kleiner für die fertigen Binärprogramme, allerdings lässt sich nicht jedes glibc-Programm auch gegen diese alternativen Bibliotheken linken (z. B. weil sie Funktionen der glibc benutzen, die in den anderen Bibliotheken fehlen), oder es verhält sich während der Ausführung unerwartet. Vor allem für eingebettete Systeme sind die schlanken libc-Implementierungen jedoch sinnvoll.

Geschichte[Bearbeiten]

Maintainer[Bearbeiten]

Seit 2001 wurde das CVS-Repository der glibc bei Red Hat gehostet und fast ausschließlich von Ulrich Drepper gepflegt (Maintainer).<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] LWN.net, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Zusätzlich wurden aktuelle Snapshots in den FTP-Archiven und deren Spiegelserver bereitgestellt. Damit kam man der Community entgegen, da man z. B. durch restriktive Firewalls nicht von überall aus per CVS auf das Internet zugreifen kann.

Um das Jahr 2001 wurde ein Lenkungsausschuss für das glibc-Projekt eingerichtet,<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> um welches es öffentlich ausgetragene Kontroversen gab. Ulrich Drepper beschrieb die Vorgänge öffentlich als Versuch einer „feindlichen Übernahme“ (engl. „hostile takeover“) durch Richard Stallman, welche fehlgeschlagen war.<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] sourceware.org, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] sourceware.com, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref>rms-accused-of-attempting-glibc-hostile-takeover auf slashdot.com am 19. August 2001</ref>

Seit Mai 2009 wird die glibc als Git-Repository bei Sourceware weiter gepflegt.<ref>Sourceware-Information zum glibc-Repo</ref>

glibc 2.3[Bearbeiten]

Mit der glibc 2.3 wurde eine Reihe von Verbesserungen integriert, die wichtigste davon ist die Ersetzung der alten Linux-Threading-Erweiterung linuxthreads durch die Native POSIX Thread Library (NPTL), die ebenso wie die glibc selbst federführend bei Red Hat entwickelt wurde. Die NPTL ermöglicht in Zusammenarbeit ab dem Linux-Kernel 2.6 eine deutliche Leistungssteigerung beim Threading und ist dabei POSIX-konform. Da man abwärtskompatibel sein wollte, steht für Programme, die auf nicht POSIX-konforme Verhaltensweisen der alten Implementation angewiesen sind, auch weiter LinuxThreads zur Verfügung, man muss es nun aber explizit per Linker-Direktive anfordern (z. B. LD_ASSUME_KERNEL=2.4.22). Auch die glibc selbst ist in den wichtigsten Funktionen abwärtskompatibel. Der kleinste gemeinsame Nenner ist dabei die Funktionalität der libc6, weshalb die Bezeichnungen glibc und libc6 auch häufig synonym füreinander verwendet werden (auf Alpha- und IA-64-Architekturen heißen die Bibliotheken aus historischen Gründen libc6.1, bieten jedoch die gleiche Funktionalität).

EGLIBC-Fork[Bearbeiten]

Wegen eines fehlenden Fokus der glibc auf Kompatibilität mit eingebetteten Systemen,<ref name="drepper">Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] udrepper.livejournal.com, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> besonders ARM-Prozessoren, und Problemen mit dem Umgang des Projektverantwortlichen, Ulrich Drepper, bei Fehlerberichten und eingereichten Korrekturen wurde eine Abspaltung (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.) des Projekts namens EGLIBC erstellt.<ref>http://www.eglibc.org/home</ref> Nach Selbsteinschätzung der Entwickler handelt es sich bei eglibc jedoch nicht um einen klassischen Fork, vielmehr wollen die Entwickler die Änderungen von glibc übernehmen, aber auch Patches akzeptieren, die keinen Einzug in glibc gefunden haben.<ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackVorlage:Webarchiv/archiv-botSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Webarchiv/Wartung/URLSkriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref> Damit verfolgt eglibc das Ziel, einen freundlicheren Umgang mit Entwicklern zu pflegen und Embedded-Prozessoren besser zu unterstützen. Als erste große Linux-Distribution hat Debian auf diese Implementierung umgestellt, wechselte aber im Juni 2014 wieder zurück zu glibc, da das EGLIBC-Projekt seine Mission als erfüllt ansah und sich auflöste.<ref name="aur">Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] aurel32.net, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Slashdot, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Aurélien, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Ubuntu verwendet ab Version 9.10 EGLIBC.<ref>http://www.eglibc.org/news</ref>

Versionsgeschichte[Bearbeiten]

Die Veröffentlichungsdaten wurden, so weit möglich, vom offiziellen FTP-Server übernommen.<ref>http://ftp.gnu.org/gnu/glibc/</ref>

Version Datum Bemerkungen
Ältere Version; nicht mehr unterstützt: 1.0 März 1992
Ältere Version; nicht mehr unterstützt: 1.x 1992–1994
Ältere Version; nicht mehr unterstützt: 1.09 November 1994
Ältere Version; noch unterstützt: 2.0 Februar 1997
Ältere Version; noch unterstützt: 2.1 Mai 1999
Ältere Version; noch unterstützt: 2.2 Januar 2001 Unterstützung großer Dateien (Large File Support)<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] SUSE, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
Ältere Version; noch unterstützt: 2.3 Oktober 2002 Native POSIX Thread Library (NPTL)
Ältere Version; noch unterstützt: 2.4 6. März 2006 Die Unterstützung der LinuxThreads wurde entfernt. Dies führte zu einem ABI Bruch für manche bestehende Binaries.<ref>https://man7.org/linux/man-pages/man7/pthreads.7.html</ref><ref>https://www.improbability.net/loki/ Libraries for running old Loki games.</ref>
Ältere Version; noch unterstützt: 2.5 29. September 2006
Ältere Version; noch unterstützt: 2.6 17. Mai 2007
Ältere Version; noch unterstützt: 2.7 19. Oktober 2007
Ältere Version; noch unterstützt: 2.8 11. April 2008
Ältere Version; noch unterstützt: 2.9 10. März 2009
Ältere Version; noch unterstützt: 2.10 Mai 2009 (?) Datum der Version 2.10.1
Ältere Version; noch unterstützt: 2.11 3. November 2009
Ältere Version; noch unterstützt: 2.12 August 2010 (?) Datum der Version 2.12.1
Ältere Version; noch unterstützt: 2.13 1. Februar 2011 (?)
Ältere Version; noch unterstützt: 2.14 1. Juni 2011
Ältere Version; noch unterstützt: 2.15 21. März 2012
Ältere Version; noch unterstützt: 2.16 30. Juni 2012
Ältere Version; noch unterstützt: 2.17 25. Dezember 2012
Ältere Version; noch unterstützt: 2.18 12. August 2013
Ältere Version; noch unterstützt: 2.19 8. Februar 2014
Ältere Version; noch unterstützt: 2.20 7. September 2014
Ältere Version; noch unterstützt: 2.21 6. Februar 2015
Ältere Version; noch unterstützt: 2.22 5. August 2015
Ältere Version; noch unterstützt: 2.23 19. Februar 2016
Ältere Version; noch unterstützt: 2.24 4. August 2016
Ältere Version; noch unterstützt: 2.25 5. Februar 2017
Ältere Version; noch unterstützt: 2.26 2. August 2017
Ältere Version; noch unterstützt: 2.27 1. Februar 2018
Ältere Version; noch unterstützt: 2.28 1. August 2018
Ältere Version; noch unterstützt: 2.29 31. Januar 2019
Ältere Version; noch unterstützt: 2.30 1. August 2019
Ältere Version; noch unterstützt: 2.31 1. Februar 2020
Ältere Version; noch unterstützt: 2.32 5. August 2020
Ältere Version; noch unterstützt: 2.33 1. Februar 2021
Ältere Version; noch unterstützt: 2.34 1. August 2021
Ältere Version; noch unterstützt: 2.35 3. Februar 2022
Ältere Version; noch unterstützt: 2.36 2. August 2022
Ältere Version; noch unterstützt: 2.37 1. Februar 2023
Ältere Version; noch unterstützt: 2.38 31. Juli 2023
Ältere Version; noch unterstützt: 2.39 31. Januar 2024
Ältere Version; noch unterstützt: 2.40 22. Juli 2024
Aktuelle Version: 2.41 29. Januar 2025
Legende:
Ältere Version; nicht mehr unterstützt
Ältere Version; noch unterstützt
Aktuelle Version
Aktuelle Vorabversion
Zukünftige Version

Siehe auch[Bearbeiten]

Literatur[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />