Linker, Loader und ausführbare Formate

Welche Aufgabe hat der dynamische Linker (z. B. ld.so), der beim Start eines dynamisch gelinkten Programms unter Linux tätig wird?

  1. AEr kompiliert Quellcode und erzeugt Maschinencode
  2. BEr sucht die benötigten Shared Libraries, lädt sie in den Speicher, bindet die Symbole und lässt dann das Programm starten
  3. CEr räumt nach Programmende den freien Speicherplatz der Festplatte auf
Antwort und Erläuterung anzeigen

Antwort: B. Er sucht die benötigten Shared Libraries, lädt sie in den Speicher, bindet die Symbole und lässt dann das Programm starten

In der ausführbaren Datei eines dynamisch gelinkten Programms steht, wo sich der zu verwendende dynamische Linker befindet; nach dem Laden des Programms übergibt das Betriebssystem zunächst die Kontrolle an den dynamischen Linker. Dieser sucht und lädt die benötigten Shared Libraries, führt Relokation und Symbolbindung durch und übergibt dann die Kontrolle an den Einsprungpunkt des Programms. Auch das zusätzliche Laden von Bibliotheken zur Laufzeit mit dlopen wird vom dynamischen Linker übernommen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage zum Zweck von ASLR (Address Space Layout Randomization) ist richtig?
  2. Was ist der Hauptgrund dafür, eine ausführbare Datei als PIE (Position Independent Executable) zu erzeugen?
  3. Was tut der Loader des Betriebssystems beim Start eines Programms (z. B. unter Linux mit execve)?
  4. Welche Aussage zur Adresse, an der das Betriebssystem bei einem C-Programm die Ausführung zuerst beginnt (Entry Point), ist richtig?
  5. Was geschieht im Allgemeinen mit dem Wert 3, wenn die Funktion main in C mit „return 3;“ endet?

Vergleiche zu diesem Thema