Was sind Linker und wie funktionieren sie?
Linker sind eine Art Software, die Objektdateien und Bibliotheken verbindet, um eine ausführbare Datei zu erstellen. Sie werden bei der Entwicklung von Betriebssystemen, Anwendungen und anderer Software verwendet. Linker nehmen die von Compilern und Bibliotheken generierten Objektdateien als Eingabe und generieren eine ausführbare Datei als Ausgabe.
Linker führen mehrere Funktionen aus, darunter:
1. Auflösen symbolischer Referenzen: Wenn ein Programm in einer Hochsprache geschrieben ist, kann es symbolische Referenzen auf Funktionen oder Variablen enthalten, die nicht im aktuellen Quellcode definiert sind. Der Linker löst diese Referenzen auf, indem er die Definitionen der Funktionen oder Variablen in anderen Objektdateien oder Bibliotheken findet.
2. Code und Daten verschieben: Wenn Objektdateien vom Compiler generiert werden, können sie Code und Daten enthalten, die relativ zum Speicherort der Objektdatei sind. Der Linker verschiebt diesen Code und diese Daten an die richtige Stelle in der ausführbaren Datei.
3. Entfernen unnötiger Codes und Daten: Der Linker kann Code und Daten entfernen, die in der endgültigen ausführbaren Datei nicht benötigt werden, wodurch deren Grö+e reduziert und die Leistung verbessert wird.
4. Erstellen einer ausführbaren Datei: Der Linker verwendet die Objektdateien und Bibliotheken als Eingabe und generiert eine ausführbare Datei, die auf dem Zielcomputer ausgeführt werden kann.
Es stehen mehrere Arten von Linkern zur Verfügung, darunter:
1. Dynamische Linker: Diese Linker erstellen eine ausführbare Datei, die einen Verweis auf die Bibliotheken und andere Objektdateien enthält, von denen sie abhängt. Wenn das Programm ausgeführt wird, lädt der dynamische Linker diese Abhängigkeiten und löst alle symbolischen Referenzen zur Laufzeit auf.
2. Statische Linker: Diese Linker erstellen eine ausführbare Datei, die alle darin eingebetteten Abhängigkeiten enthält. Dies bedeutet, dass das Programm ohne zusätzliche Abhängigkeiten ausgeführt werden kann, es bedeutet aber auch, dass die Grö+e der ausführbaren Datei grö+er wird.
3. Gemeinsame Linker: Diese Linker erstellen eine ausführbare Datei, die gemeinsam genutzte Bibliotheken enthält, bei denen es sich um Code- und Datensammlungen handelt, die von mehreren Programmen verwendet werden können. Wenn ein Programm mit einer gemeinsam genutzten Bibliothek verknüpft wird, sind nur die spezifischen Funktionen und Variablen, die benötigt werden, in der endgültigen ausführbaren Datei enthalten.
Zusammenfassend sind Linker ein wesentlicher Bestandteil des Softwareentwicklungsprozesses, da sie die von Compilern generierten Objektdateien übernehmen und Bibliotheken und erstellen Sie eine ausführbare Datei, die auf dem Zielcomputer ausgeführt werden kann. Sie führen mehrere Funktionen aus, darunter das Auflösen symbolischer Referenzen, das Verschieben von Code und Daten, das Entfernen unnötiger Codes und Daten und das Erstellen einer ausführbaren Datei. Es stehen verschiedene Arten von Linkern zur Verfügung, darunter dynamische, statische und gemeinsam genutzte Linker.