Linker, Loader und ausführbare Formate

Welche Aussage zur Hauptaufgabe des Linkers ist richtig?

  1. AEr verbindet mehrere Objektdateien und Bibliotheken, bindet Namen an Adressen und erzeugt eine ausführbare Datei
  2. BEr findet Syntaxfehler im Quellcode und meldet sie
  3. CEr gibt den Speicher eines laufenden Programms nach Gebrauch automatisch frei
Antwort und Erläuterung anzeigen

Antwort: A. Er verbindet mehrere Objektdateien und Bibliotheken, bindet Namen an Adressen und erzeugt eine ausführbare Datei

Der Linker ordnet die in den einzelnen Objektdateien referenzierten Namen (Symbole) den an anderer Stelle definierten Entitäten zu (Symbolauflösung), legt Code und Daten aller Dateien hintereinander und bestimmt die endgültigen Adressen und ersetzt die vorläufigen Adressen in den Befehlen durch korrekte Werte (Relokation). Bei Bedarf entnimmt er Funktionen aus Bibliotheken und fügt sie hinzu. So entsteht eine ausführbare Datei, die das Betriebssystem laden und ausführen kann.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage zur vom Linker durchgeführten Symbolauflösung ist richtig?
  2. Welche Aussage zur vom Linker durchgeführten Relokation ist richtig?
  3. Beim Linken eines C-Programms trat der Fehler „undefined reference to `foo'“ (undefinierte Referenz auf foo) auf. Was ist die wahrscheinlichste Ursache?
  4. In a.c und b.c wurde jeweils eine globale Funktion gleichen Namens void init(void) ohne static definiert und gelinkt. Was geschieht?
  5. Welche Wirkung hat es, in C eine Funktion mit static zu definieren (z. B. static int helper(void))?

Vergleiche zu diesem Thema