Contents
Was ist statische Verknüpfung?
Beim statischen Verknüpfen werden alle im Programm verwendeten Bibliotheksmodule in das endgültige ausführbare Image kopiert. Dies wird vom Linker durchgeführt und ist der letzte Schritt des Kompilierungsprozesses. Der Linker kombiniert Bibliotheksroutinen mit dem Programmcode, um externe Referenzen aufzulösen und ein ausführbares Bild zu erzeugen, das zum Laden in den Speicher geeignet ist. Daher legt das Betriebssystem beim Laden des Programms eine einzelne Datei in den Speicher ab, die den ausführbaren Code und die Daten enthält. Diese statisch verknüpfte Datei enthält sowohl das aufrufende Programm als auch das aufgerufene Programm.
Fakten zur statischen Verknüpfung
- Beim statischen Verknüpfen werden alle im Programm verwendeten Bibliotheksmodule in das endgültige ausführbare Image kopiert.
- Wenn sich beim statischen Linken eines der externen Programme geändert hat, müssen sie neu kompiliert und neu gelinkt werden, sonst werden die Änderungen nicht in der vorhandenen ausführbaren Datei widergespiegelt.
- Statisches Linken wird von Programmen durchgeführt, die als Linker bezeichnet werden, als letzter Schritt beim Kompilieren eines Programms. Linker werden auch Link-Editoren genannt.
- Statisch verknüpftes Programm benötigt jedes Mal eine konstante Ladezeit, wenn es zur Ausführung in den Speicher geladen wird.
- In statisch verknüpften Programmen ist der gesamte Code in einem einzigen ausführbaren Modul enthalten. Daher treten nie Kompatibilitätsprobleme auf.
- Programme, die statisch verknüpfte Bibliotheken verwenden, sind normalerweise schneller als Programme, die gemeinsam genutzte Bibliotheken verwenden.
- Statisch verknüpfte Dateien sind erheblich größer, da externe Programme in die ausführbaren Dateien integriert sind.
- Statistisch verknüpfte Dateien sind größer.
Was ist dynamische Verknüpfung?
Dynamisches Linken besteht darin, Code in ein Formular zu kompilieren und zu verknüpfen, das sowohl zur Laufzeit als auch zur Linkzeit von Programmen geladen werden kann. Beim dynamischen Linken werden die Namen der externen Bibliotheken (gemeinsam genutzten Bibliotheken) in der endgültigen ausführbaren Datei platziert, während das eigentliche Binden zur Laufzeit stattfindet, wenn sowohl die ausführbare Datei als auch die Bibliotheken im Speicher abgelegt werden. Dynamisches Verknüpfen ermöglicht es mehreren Programmen, eine einzelne Kopie eines ausführbaren Moduls zu verwenden.
Dynamic Linking verwendet eine spezielle Variante eines Bibliotheksformats, die als Dynamic Linking Library (DLL) bezeichnet wird und eine gängige Methode ist, um Anwendungen und Subsysteme in kleinere Teile zu unterteilen, die kompiliert, getestet, wiederverwendet, verwaltet, bereitgestellt und installiert werden können separat. Dieser Ansatz ist bei Microsoft-Betriebssystemen sehr beliebt und wurde entwickelt, um die Größe der ausführbaren Anwendungsdateien und auch ihrer Laufzeitabbilder zu begrenzen.
Fakten zu Dynamic Linking
- Beim Dynamic Linking werden die Namen der externen Bibliotheken oder Shared Libraries im Speicher abgelegt. Durch dynamisches Verknüpfen können viele Programme eine einzelne Kopie des ausführbaren Moduls verwenden.
- Beim Dynamic Linking können gemeinsam genutzte Module aktualisiert und neu kompiliert werden. Dies ist einer der größten Vorteile von Dynamic Linking.
- Die dynamische Verknüpfung wird zur Laufzeit vom Betriebssystem durchgeführt.
- Beim dynamischen Linken kann die Ladezeit reduziert werden, wenn der Code der gemeinsam genutzten Bibliothek bereits im Speicher vorhanden ist.
- Dynamisch verknüpfte Programme sind auf eine kompatible Bibliothek angewiesen. Wenn eine Bibliothek geändert wird (z. B. kann eine neue Compiler-Version eine Bibliothek ändern), müssen Anwendungen möglicherweise überarbeitet werden, um mit der neuen Version der Bibliothek kompatibel zu sein. Wenn eine Bibliothek aus dem System entfernt wird, funktionieren Programme, die diese Bibliothek verwenden, nicht mehr.
- Programme, die gemeinsam genutzte Bibliotheken verwenden, sind normalerweise langsamer als Programme, die statisch verknüpfte Bibliotheken verwenden.
- Beim dynamischen Verknüpfen wird nur eine Kopie der gemeinsam genutzten Bibliothek im Speicher gehalten. Dadurch wird die Größe ausführbarer Programme erheblich reduziert, wodurch Arbeitsspeicher und Speicherplatz gespart werden.
- Dynamisch verknüpfte Dateien sind kleiner.
Lesen Sie auch: Unterschied zwischen Linker und Loader
Unterschied zwischen statischer und dynamischer Verknüpfung in Tabellenform
VERGLEICHSGRUNDLAGE | STATISCHE VERKNÜPFUNG | DYNAMISCHE VERKNÜPFUNG |
Beschreibung | Beim statischen Verknüpfen werden alle im Programm verwendeten Bibliotheksmodule in das endgültige ausführbare Image kopiert. | Beim Dynamic Linking werden die Namen der externen Bibliotheken oder Shared Libraries im Speicher abgelegt. Durch dynamisches Verknüpfen können viele Programme eine einzelne Kopie des ausführbaren Moduls verwenden. |
Gemeinsam genutzte Module | Wenn sich beim statischen Linken eines der externen Programme geändert hat, müssen sie neu kompiliert und neu gelinkt werden, sonst werden die Änderungen nicht in der vorhandenen ausführbaren Datei widergespiegelt. | Beim Dynamic Linking können gemeinsam genutzte Module aktualisiert und neu kompiliert werden. |
Die Ausführung | Statisches Linken wird von Programmen durchgeführt, die als Linker bezeichnet werden, als letzter Schritt beim Kompilieren eines Programms. Linker werden auch Link-Editoren genannt. | Die dynamische Verknüpfung wird zur Laufzeit vom Betriebssystem durchgeführt. |
Ladezeit | Statisch verknüpftes Programm benötigt jedes Mal eine konstante Ladezeit, wenn es zur Ausführung in den Speicher geladen wird. | Beim dynamischen Linken kann die Ladezeit reduziert werden, wenn der Code der gemeinsam genutzten Bibliothek bereits im Speicher vorhanden ist. |
Kompatibilitätsfaktor | In statisch verknüpften Programmen ist der gesamte Code in einem einzigen ausführbaren Modul enthalten. Daher treten nie Kompatibilitätsprobleme auf. | Dynamisch verknüpfte Programme sind auf eine kompatible Bibliothek angewiesen. |
Geschwindigkeit | Programme, die statisch verknüpfte Bibliotheken verwenden, sind normalerweise schneller als Programme, die gemeinsam genutzte Bibliotheken verwenden. | Programme, die gemeinsam genutzte Bibliotheken verwenden, sind normalerweise langsamer als Programme, die statisch verknüpfte Bibliotheken verwenden. |
Größe des ausführbaren Programms | Statisch verknüpfte Dateien sind erheblich größer, da externe Programme in die ausführbaren Dateien integriert sind. | Beim dynamischen Verknüpfen wird nur eine Kopie der gemeinsam genutzten Bibliothek im Speicher gehalten. Dadurch wird die Größe ausführbarer Programme erheblich reduziert, wodurch Arbeitsspeicher und Speicherplatz gespart werden. |
Dateigröße | Statistisch verknüpfte Dateien sind größer. | Dynamisch verknüpfte Dateien sind kleiner. |