Linker, Loader und ausführbare Formate

Welche Aussage zur vom Compiler aus einer Quelldatei ausgegebenen Objektdatei (.o) ist richtig?

  1. ASie ist ein fertiges Programm, das vom Betriebssystem unmittelbar ausgeführt werden kann
  2. BSie ist lediglich komprimierter Quellcode und enthält keinen Maschinencode
  3. CSie enthält Maschinencode, aber die Adressen von Funktionen und Variablen in anderen Dateien stehen noch nicht fest
Antwort und Erläuterung anzeigen

Antwort: C. Sie enthält Maschinencode, aber die Adressen von Funktionen und Variablen in anderen Dateien stehen noch nicht fest

Eine Objektdatei enthält den übersetzten Maschinencode der Funktionen der Datei, Initialwerte von Variablen, eine Liste der definierten und referenzierten Namen (Symboltabelle) sowie eine Liste der Stellen, an denen später Adressen eingetragen werden (Relokationsinformationen). Befehle, die wie bei printf eine Funktion in einer anderen Datei aufrufen, behalten einen vorläufigen Wert, da die Adresse noch unbekannt ist. Der Linker fasst mehrere Objektdateien zusammen, legt die Adressen fest und erzeugt die ausführbare Datei.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

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

Vergleiche zu diesem Thema