EMZETT.
Login

Linker und Lader

Kurz: Der Linker fügt mehrere übersetzte Objektdateien und Bibliotheken zu einem ausführbaren Programm zusammen. Der Lader des Betriebssystems bringt dieses Programm in den Speicher und startet es.

Genauer: Jede Quelldatei wird einzeln zu Maschinencode mit offenen Verweisen (Symbolen). Der Linker löst diese Verweise auf, etwa den Aufruf einer Funktion aus einer anderen Datei. Statisch gebundene Bibliotheken werden fest eingebaut, dynamische erst beim Start oder Laden eingebunden.

Im Detail

  • Statisches Linken: Alles in einer Datei, größer, keine Abhängigkeiten zur Laufzeit.
  • Dynamisches Linken: .so/.dll: kleiner, gemeinsam genutzt, aber Versionsprobleme („DLL Hell“).
  • Positionsunabhängiger Code (PIC) und ASLR: Zufällige Ladeadressen erschweren Angriffe.
  • Dateiformate: ELF (Linux), PE (Windows), Mach-O (macOS).
  • Symbole: Namen von Funktionen und Variablen. Undefined reference = Symbol fehlt.
  • Lader: Mappt Segmente in den Speicher, setzt Rechte (ausführbar, schreibbar), löst dynamische Verweise auf.
  • Tools: ldd, nm, objdump, readelf.

Siehe auch: Zwischendarstellung und Compiler-Optimierung, Virtueller Speicher und Paging