Statische und dynamische Verknüpfung
Es gibt zwei Arten von ausführbaren Binärdateien: statisch verknüpfte und dynamisch verknüpfte. Zunächst zu den statisch verknüpften : Wenn ein Programm eine Bibliotheksfunktion aufrufen möchte, verweist es mit seinem Namen darauf. Beim Erstellen des Programms aus dem Quellcode werden alle im Programm verwendeten Bibliotheksfunktionen aus der Bibliothek in das Programm kopiert. Das Programm enthält dann seinen eigenen Code sowie den Code der von ihm verwendeten Bibliotheksfunktionen. In den aufrufenden Stellen wird dann der Name in die Adresse der entsprechenden Funktion im Programm geändert. Dieser Prozess wird als Verknüpfung bezeichnet, da er den Namen einer Funktion mit der Funktion selbst, ihrer Implementierung, verknüpft. Es heißt statisch , da die Verknüpfung nicht mehr geändert werden kann, nachdem das Programm erstellt wurde.
Dynamisch verknüpfte Programme funktionieren anders: Das Programm verweist auch namentlich auf Bibliotheksfunktionen. Beim Erstellen des Programms werden zwei Listen zusammen mit dem Programm zusammengestellt und gespeichert: eine Liste der Bibliotheksfunktionen, die an welchen Stellen verwendet werden, und eine Liste der Bibliotheken, die die vom Programm verwendeten Funktionen enthalten. Das ist alles für den Aufbau des Programms.
Später, zur Ausführungszeit , sucht ein spezielles Hilfsprogramm, der sogenannte dynamische Linker, an bestimmten Stellen im Dateisystem nach jeder Bibliothek in der Bibliotheksliste und lädt sie in den Speicher. Jetzt weiß der dynamische Linker, an welchen Speicheradressen die Bibliotheksfunktionen verfügbar sind. Es verwendet die erste Liste, um an allen Stellen, an denen Bibliotheksfunktionen aufgerufen werden, die richtige Adresse zu schreiben. Dann kann das dynamisch verknüpfte Programm ausgeführt werden.