Library
Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist. |
--Robi 12:55, 26. Okt 2006 (CEST)
diesen Beitrag bitte mit einarbeiten
http://www.linux-club.de/viewtopic.php?t=70347
Inhaltsverzeichnis
Library
Was ist ein Library
Unter Library (Bibliothek) versteht man eine Sammlung von universell einsetzbaren Softwarebausteinen. Somit muss bei der Entwicklung nicht jede Funktion in jedem Programm wieder neu erfunden oder neu geschrieben werden, sondern man nutzt bei der Erstellung der Software schon fertig erprobte Funktion einer solchen Library. Zur Erstellung neuer Funktionen können somit Librarys mit fundamentalen Funktionen benutzt werden, und mehrere thematisch und logisch zusammenhängende neue Funktionen wiederum zu einer neuen Library zusammengestellt werden. Somit entstehen Hirarchien von Libraries und bei der Programmentwicklung kann man sich auf die Entwicklung des wirklich Neuem oder Einmaligem beschränken.
verschieden Typen von Library
Man unterscheidet :
- Quelltextbibliotheken
enthalten Sammlungen von Wertedefinitionen, Deklarationen, Funktionen, Klassen, generischen Bestandteilen, usw. In diesen Libraries befindet sich Quelltext in irgend einer Programmiersprache. Oftmals werden solche Bibliotheken genutzt um die Schnittstellen und Definitionen für andere Libraries zur Verfügung zu stellen. Solche Librarys werden nur während der Entwicklung und Übersetzung des Quellcodes in den ausführbaren Code benötigt. Zur Ausführung oder während der Laufzeit des fertigen Programmes werden diese Library nicht mehr benötigt.
- Statische Bibliotheken
bestehen schon aus ausführbarem Binärcode. Nach dem Kompiliervorganges des neuen Programmes, werden sie mittels eines so genannten Linker oder Binder mit dem ausführbaren Programm zu einem lauffähigem Programm vereint. Der Linker sucht aus den Bibliotheksdateien die Unterprogramme heraus, für die es im Programm keine Implementierung gibt. Diese werden dann aus den Dateien extrahiert und mit den Funktionen des Programms zu einer einzigen Datei verbunden. Man nennt das statisch gegem die Library linken. Jedes so entstandene Programm und somit auch jeder Prozess der durch das Starten eines solchen Programmes entsteht, hat also Teile der Library "im Bauch". Die Library an sich, wird zur Ausführung des Programmes nicht benötigt. Dieses Verfahren wird wegen des großen Speicherverbrauchs während der Laufzeit der Programme ehr selten angewant.
- Dynamische Bibliotheken
bestehen ebenfalls aus schon ausführbarem Binärcode. Die benötigten Objekte der Library werden aber nicht vom Linker in das neue Programm übernommen, sondern nur die Einsprungsmarke der benötigten Funktionen im Libray wird im Programm hinterlegt. Man spricht hier von dynamisch gegen die Library linken. Dynamische Bibliotheken werden bei Bedarf, also erst bei der Anforderung eines Programmes, komplett in den Arbeitsspeicher geladen und können dort von mehreren Programmen gleichzeitig genutzt werden. Dadurch muss eine Bibliothek, die von mehreren Programmen genutzt wird, nur einmal im Speicher gehalten werden, was einen bedeutenden Vorteil gegenüber statisch verlinkten Programmen bedeutet. Diese Library muss dann aber während des Startens der Programme im Linuxsystem auch verfügbar sein. Da aber mehrere Programme ein Library im Hauptspeicher benutzen können, muss die Verwaltung, das Laden und Entladen dieser Library von Linux selbst übernommen werden, und kann nicht von den Programmen selbst übernommen werden. Diese Funktion, sozusagen der dynamische Linker und Lader oder Linux-Loader, erledigt in Linux ein Programm Namens ld.so .
Vor- und Nachteile von dynamischen Library
Neben dem schon angesprochenem Vorteil, daß eine Library im Speicher gleichzeitig von mehreren Programmen und Instanzen dieser Programme genutzt werden kann, was eine sehr effektive Hauptspeicherverwaltung begünstigt, gibt es noch einen riesen Vorteil gegenüber statisch verlinkten Programmen. Im Falle einer notwendigen Änderung innerhalb von Funktionen eines Libraries, muss im System nur diese Library ausgetauscht werden und nicht alle Programme, die gegen diese Library gelinkt sind, neu kompiliert und neu gelinkt werden. Den Vorteilen stehen aber auch einige Nachteile entgegen. Da eine Library zur Ausführung von Programmen oder anderen Libraries in einem System immer vorhanden sein muss, entstehen jede Menge Abhängigkeiten. Sicherlich hat das jeder schon einmal erlebt, und mach einer auch schon daran verzweifelt, die Installation eines neuen Programmes erfordert eine bestimmte Library und will man diese fehlende Library dann installieren, dann fordert diese Installation jetzt erstmal wiederum bestimmte Libraries usw..... Ein zweiter Nachteil wird schnell sichtbar, wenn man bedenkt, dass es nicht immer gelingt, daß neue Versionen einer Library immer 100% kompatibel zu ihrer Vorgängerversion sind. Somit muss man in einem Linuxsystem oftmals mehrere Versionen ein und des selben Library bevorraten, da die einzelnen Programm gegen bestimmte Versionen gelinkt sind und die Abhängigkeiten besagen, es muss mindestens diese Version sein, oder maximal diese Version oder genau diese Version der Library. Siehe auch hier das Problem mit der Standard-Library, die wohl wichtigste Library im System, gegen die alle anderen Libraries und Programme gelinkt sind.
Der dynamische Loader
Namen und Verzeichnisse der Library
Welche Library braucht welches Programm
Libraries manuell installieren und aktualisieren
weiter Befehle rund um Libraries
--Robi 12:55, 26. Okt 2006 (CEST)