Voraussetzung – Einführung in das Compiler-Design
Linker ist ein Programm in einem System, das dabei hilft, ein Objektmodul eines Programms zu einer einzigen Objektdatei zu verknüpfen. Es führt den Verknüpfungsprozess durch. Linker werden auch Link-Editoren genannt. Das Verlinken ist ein Prozess des Sammelns und Verwaltens von Code und Daten in einer einzigen Datei. Linker verknüpfen auch ein bestimmtes Modul mit der Systembibliothek. Es nimmt Objektmodule von Assembler als Eingabe und bildet eine ausführbare Datei als Ausgabe für den Lader.

Das Linken wird sowohl zur Kompilierzeit durchgeführt, wenn der Quellcode in Maschinencode übersetzt wird, als auch zur Ladezeit, wenn das Programm vom Lader in den Speicher geladen wird. Das Linken wird im letzten Schritt beim Kompilieren eines Programms durchgeführt.

Quellcode -> Compiler -> Assembler -> Objektcode -> Linker -> Ausführbare Datei -> Loader

Es gibt zwei Arten des Linkens:
1. Statisches Linken –
Es wird während der Kompilierung des Quellprogramms durchgeführt. Beim statischen Linken wird vor der Ausführung gelinkt. Es nimmt eine Sammlung von verschiebbaren Objektdateien und Befehlszeilenargumenten und generiert eine vollständig verknüpfte Objektdatei, die geladen und ausgeführt werden kann.

Statische Linker erfüllen zwei Hauptaufgaben:

  • Symbolauflösung – Jede Symbolreferenz wird genau einer Symboldefinition zugeordnet. Jedes Symbol hat eine vordefinierte Aufgabe.
  • Relocation – Es verschiebt Code- und Datenabschnitte und ändert Symbolverweise auf den verschobenen Speicherort.

Der Linker kopiert alle im Programm verwendeten Bibliotheksroutinen in ein ausführbares Image. Dadurch wird mehr Speicherplatz benötigt. Da es nicht erforderlich ist, dass eine Bibliothek auf dem System vorhanden ist, wenn es ausgeführt wird. es ist also schneller und tragbarer. Keine Ausfallwahrscheinlichkeit und weniger Fehlerwahrscheinlichkeit.

2. Dynamisches Linken – Dynamisches Linken wird während der Laufzeit durchgeführt. Diese Verknüpfung wird erreicht, indem der Name einer gemeinsam nutzbaren Bibliothek in das ausführbare Bild eingefügt wird. Es gibt mehr Fehler- und Ausfallchancen. Es wird weniger Speicherplatz benötigt, da mehrere Programme eine einzelne Kopie der Bibliothek gemeinsam nutzen können.

Hier können wir Code-Sharing durchführen. Dies bedeutet, dass wir dasselbe Objekt mehrmals im Programm verwenden. Anstatt dasselbe Objekt immer wieder mit der Bibliothek zu verknüpfen, teilt jedes Modul Informationen eines Objekts mit anderen Modulen, die dasselbe Objekt haben. Die beim Linken benötigte gemeinsam genutzte Bibliothek wird im virtuellen Speicher gespeichert, um RAM zu sparen. Bei dieser Verknüpfung können wir auch den Code für den reibungslosen Ablauf des Codes verschieben, aber der gesamte Code ist nicht verschiebbar. Es fixiert die Adresse zur Laufzeit.

Lernen Sie alle GATE CS-Konzepte mit kostenlosen Live-Kursen auf unserem YouTube-Kanal kennen.