7. DLIB - Der Bibliotheken-Manager

Das Dienstprogramm DLIB dient zum Verwalten von statischen Bibliotheken, die eine Ansammlung von Objektdateien darstellen. Der Linker benötigt solche Bibliotheken, um daraus ablauffähige Applikationen zu erstellen. Aufgrund der Modularität von (beispielsweise) C sind viele Funktionen auf getrennt compilierte Quelldateien verteilt. Jedes Programm, das eine dieser Funktionen benutzt, muß mit der entsprechenden Objektdatei gelinkt werden, was aufgrund der Vielzahl der Funktionen in der Regel sehr aufwendig und unter Umständen auch unmöglich sein kann, wenn man diese per Kommandozeile einzeln an den Linker übergeben müßte. An dieser Stelle werden Bibliotheken eingesetzt, die alle benötigten Objektmodule beinhalten, die zum Linken benötigt werden. Der große Vorteil bei der Benutzung von Bibliotheken ist, daß sich der Linker die benötigten Objektmodule aus diesen eigenständig heraussucht. Die Anzahl der in einer Bibliothek vorhandenen Objektmodule ist dabei nicht begrenzt. Das Dienstprogramm DLIB dient nun dazu, solche Bibliotheken zu erstellen, zu verändern, zu erweitern oder den Inhalt von Bibliotheken aufzulisten.

7.1 Optionen

Der Aufruf von DLIB geschieht auf folgende Weise :

Dabei gilt : Werden bei den verschiedenen Dateinamen keine Dateierweiterungen angegeben, nimmt DLIB automatisch folgende Standarderweiterungen : Vor jeder Veränderung einer bereits bestehenden Bibliotheksdatei wird eine Sicherung der Bibliothek mit der Endung '.BAK' angelegt.


7.2 Bibliotheks-Struktur

7.2.1 Inhaltsverzeichnis

Ein wesentlicher Bestandteil einer Bibliothek ist das Inhaltsverzeichnis, das sich am Ende einer Bibliothek befindet (eine Bibliothek besteht aus drei Teilen : Headersatz, Objektmodul-Block, Verzeichnis). Dieses Inhaltsverzeichnis enthält die Symbole aus allen Modulen, die sich in der Bibliothek befinden, sowie einen Verweis auf das entsprechende Modul, in dem sich das Symbol befindet. Bei jeder Veränderung der Bibliothek (d.h. Hinzufügen oder Entfernen von Modulen) muß dieses aktualisiert werden. Normalerweise wird bei der Behandlung der Symbole im Inhaltsverzeichnis keine Unterscheidung zwischen Groß- und Kleinschreibung gemacht, was durch das Verhalten von bestimmten Linkern kommt, die dieses ebenfalls nicht tun. Deswegen wird das Hinzufügen eines Symbols zum Verzeichnis verweigert, wenn bereits ein "ähnliches" Symbol vorhanden ist, d.h. wenn sich beide nur in der Schreibweise unterscheiden. Neuere Linker, wie z.B. DLINK32 oder TLINK(32) können sehr wohl beim Linken die Schreibweise von Symbolen unterscheiden, weshalb auch die entsprechenden Lib-Manager wie DLIB oder TLIB dies in Form einer bestimmten Kommandozeilen-Option unterstützen (meist '/c'). Somit ist es möglich, Bibliotheken für diese Linker aus Objektmodulen aufzubauen, deren Symbole sich nur in der Groß- und Kleinschreibung unterscheiden.

7.2.2 Seitengröße

Ein weiterer wichtiger Punkt bei der Betrachtung von Bibliotheken ist die Seitengröße einer Bibliothek, die im Headersatz vermerkt ist. Die Seitengröße einer Bibliothek legt fest, auf welche Adressen die einzelnen Objektmodule in der Bibliothek ausgerichtet werden und stellt im Zusammenhang mit dem Verzeichnis eine indirekte Limitierung von 65536 Seiten dar. Bei der Standard-Seitengröße von 16 Bytes ist die Gesamtgröße einer Bibliothek damit auf 1MB beschränkt.