diet libc

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
diet libc
Entwickler Felix von Leitner
Aktuelle Version 0.33
(13. März 2013)
Betriebssystem Linux (Architekturen: x86, ARM, SPARC, Alpha, PowerPC, MIPS, HPPA, S/390)
Kategorie Laufzeitbibliothek
Standardbibliothek
Lizenz GPLv2
www.fefe.de/dietlibc/

diet libc („diet“ engl. für 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 etwas über 100 Freiwilligen[1] entwickelt. Die Bibliothek unterliegt der GPL-Lizenz, Version 2, es sind jedoch beim Autor auch kommerzielle Lizenzen erhältlich.[2]

Der Fachöffentlichkeit vorgestellt wurde die Bibliothek unter anderem in Vorträgen von Leitners auf dem 8. Internationalen Linux-Kongress 2001[3] und den Chemnitzer Linux-Tagen 2002.[4]

Funktionsumfang[Bearbeiten]

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 darüber 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 160 kB[5] gegenüber fast 4 MB bei der glibc[6] 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.[7] Gegenüber der normalen glibc gibt dies einen deutlichen Gewinn an Geschwindigkeit[2] und die Programme werden wesentlich kleiner.[8] 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.[9][10] Programme müssen für die Verwendung der diet libc zudem generell neu kompiliert werden.

Entwicklungsgeschichte[Bearbeiten]

Die Anfänge der Entwicklung der diet libs 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.[11] Inzwischen liegt die Bibliothek in der Version 0.33 vor, die am 13. März 2013 erschienen ist.

Verwendung[Bearbeiten]

Verwendung findet die diet libc vor allem für freie Software im Bereich von Embedded Devices[2]. 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,[12] diet libc zudem von ROCK Linux, unterstützt.[13] Das Toolkit GTK+[14] ist ebenfalls zu diet libc kompatibel.

Im Gegensatz zu der größeren uClibc kann sie 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.[7]

Hauptsächlich wird diet libc für statische Linkungen verwendet, also den Fall, in dem die Bibliothek in dem Programm selbst enthalten ist, 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.[2] Diese Lösung wird auch vom Autor präferiert, eine dynamische Linkung wird nur unter i386 sowie bei neueren Versionen unter ARM überhaupt unterstützt.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. diet libc - credits
  2. a b c d Karim Yaghmour: Building embedded Linux systems. O'Reilly Media, Inc., 2003, S. 139ff
  3. Vortrag vom 28. November 2001
  4. diet libc: eine neue libc für Linux. Vortrag vom 10. März 2003
  5. [1]
  6. Ubuntu - Informationen über Paket libc6 in karmic
  7. a b Zügig abnehmen. Linux-Magazin 2006/07
  8. Some thoughts about codesize
  9. Reihe von Patches, um einige Linux-Programme diet libc-kompatibel zu machen
  10. Ein weiteres Patcharchiv (archive.org-Version, weil Original offensichtlich seit 2005 offline)
  11. diet libc - old news
  12. T2 SDE Embedded
  13. ROCK Linux - Definition from WordiQ
  14. GTK+ on Embedded Devices