diet libc
diet libc (englisch diet ‚Diät‘) ist eine C-Standard-Bibliothek für Linux-Betriebssysteme. Mit diet libc soll es ermöglicht werden, für Linux besonders kompakte Binärdateien zu erstellen. Die Bibliothek wurde von Felix von Leitner unter Mithilfe von bisher über 100 Freiwilligen[2] entwickelt. Die Bibliothek unterliegt der GPL-Lizenz, Version 2, es sind jedoch beim Autor auch kommerzielle Lizenzen erhältlich.[3]
diet libc | |
---|---|
Basisdaten | |
Entwickler | Felix von Leitner |
Aktuelle Version | 0.34 (24. September 2018) |
Betriebssystem | Linux (Architekturen: x86, ARM, SPARC, Alpha, PowerPC, MIPS, HPPA, S/390) |
Programmiersprache | C[1] |
Kategorie | Laufzeitbibliothek Standardbibliothek |
Lizenz | GPLv2 |
www.fefe.de/dietlibc/ |
Der Fachöffentlichkeit vorgestellt wurde die Bibliothek unter anderem in Vorträgen von Leitners auf dem 8. Internationalen Linux-Kongress 2001[4] und den Chemnitzer Linux-Tagen 2002.[5]
Funktionsumfang
Eine C-Standard-Bibliothek beinhaltet normalerweise etwa 200 Funktionen, die von vielen in C geschriebenen Programmen benötigt werden. Die unter Linux normalerweise verwendete glibc geht zum einen deutlich über diesen Funktionsumfang hinaus und besteht außerdem aus einigen wenigen größeren Codeblöcken, die von einem Programm, das auch nur eine dieser Funktionen nutzt, geladen werden müssen.
Die diet libc wurde dagegen von Grund auf neu geschrieben und beschränkt sich auf die wichtigsten Funktionen der Standard-C-Bibliothek, zudem ist der Programmcode auf Geschwindigkeit und geringen Umfang optimiert. Der Name spielt dabei bereits auf die primäre Zielsetzung einer schlanken libc an, was zu einer Größe des Programmpaketes von derzeit knapp 420 kB[6] gegenüber etwa 4,5 MB bei der glibc[7] führt. Die gesamte Bibliothek ist dabei modular aufgebaut, so dass jeweils nur die Funktionen geladen werden müssen, die tatsächlich in dem Programm genutzt werden.[8] Gegenüber der glibc gibt dies einen deutlichen Gewinn an Geschwindigkeit[3] und die kompilierten Programme werden wesentlich kleiner.[9] Ein vollständiger Ersatz der glibc ist auf Grund des Umfanges dieser bisher noch nicht möglich, wobei jedoch mit jeder neuen Version der diet libc weitere Funktionen zu dieser hinzugefügt werden. Darüber hinaus gibt es eine Reihe von Patches, mit denen insbesondere Kommandozeilenprogramme und Server an die diet libc angepasst werden können.[10][11] Programme müssen für die Verwendung der diet libc zudem generell neu kompiliert werden.
Entwicklungsgeschichte
Die Anfänge der Entwicklung der diet libc sind nur schlecht nachvollziehbar, da die ältesten Versionen undatiert sind; die älteste noch öffentlich zugängliche Version ist die 0.7 vom 16. Januar 2001, die Changelogs reichen bis zu einer Version 0.5.9 zurück.[12] Inzwischen liegt die Bibliothek in der Version 0.34 vor, die am 24. September 2018 erschienen ist.
Verwendung
Verwendung findet die diet libc vor allem für freie Software im Bereich von eingebetteten Systemen.[3] Die GPL erlaubt kein Linken bei proprietären Programmen, daher wird hier die unter der LGPL stehende uClibc bevorzugt. Zudem unterstützt die uClibc noch mehr Architekturen, ist jedoch wie die normale glibc nicht modular. Beide Bibliotheken werden auch von T2 SDE[13] unterstützt.
Im Gegensatz zu der größeren uClibc kann die diet libc auch für besonders kompakte Linux-Distributionen eingesetzt werden, wie dies beispielsweise im Falle des inzwischen offenbar eingeschlafenen Projektes DietLinux der Fall ist. Auch in den während des Bootvorgangs benutzten initrd- beziehungsweise initramfs-Systemen diverser konventioneller Linux-Distributionen wird diet libc aus Platz- und Geschwindigkeitsgründen verwendet.[8]
Hauptsächlich wird diet libc für statische Linkungen verwendet, also den Fall, in dem die benötigten Funktionen der Bibliothek in dem Programm selbst enthalten sind, statt als eine weitere Datei auf dem System vorliegen zu müssen. Hierbei wird durch die Wahl der diet libc, zu einem kleineren Teil aber auch durch die statische Linkung selbst, Speicherplatz gespart.[3] Diese Lösung wird auch vom Autor präferiert, eine dynamische Linkung wird nur unter i386 und bei neueren Versionen unter ARM überhaupt unterstützt.
Einzelnachweise
- www.openhub.net.
- diet libc - credits
- Karim Yaghmour: Building embedded Linux systems. O'Reilly Media, Inc., 2003, S. 139ff
- Vortrag vom 28. November 2001
- diet libc: eine neue libc für Linux. Vortrag vom 10. März 2003
- dietlibc in Ubuntu Packages
- Ubuntu - Informationen über Paket libc6
- Zügig abnehmen. Linux-Magazin 2006/07
- Some thoughts about codesize
- Reihe von Patches, um einige Linux-Programme diet libc-kompatibel zu machen
- Ein weiteres Patcharchiv (Memento vom 10. September 2005 im Internet Archive)
- diet libc - old news
- T2 SDE Embedded