Linker, loader en uitvoerbare formaten

Wat is de juiste rol van de dynamische linker (zoals ld.so) die werkt bij het starten van een dynamisch gelinkt programma op Linux?

  1. ADe broncode compileren en machinecode maken
  2. BDe benodigde gedeelde bibliotheken zoeken en in het geheugen laden, symbolen koppelen en daarna het programma laten starten
  3. CNa afloop van het programma de vrije schijfruimte opruimen
Antwoord en toelichting tonen

Antwoord: B. De benodigde gedeelde bibliotheken zoeken en in het geheugen laden, symbolen koppelen en daarna het programma laten starten

In een dynamisch gelinkt uitvoerbaar bestand staat de locatie van de te gebruiken dynamische linker, en na het laden van het programma draagt het OS eerst de verwerking aan de dynamische linker over. Die zoekt en laadt de benodigde gedeelde bibliotheken, voert relocatie en symboolkoppeling uit en draagt daarna de besturing over aan de ingang van het programma. Het tijdens uitvoering extra laden van bibliotheken met dlopen wordt eveneens door de dynamische linker verzorgd.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wat is het juiste doel van ASLR (address space layout randomization)?
  2. Wat is de belangrijkste reden om een uitvoerbaar bestand als PIE (position-independent executable) te bouwen?
  3. Wat doet de loader van het OS bij het starten van een programma (zoals execve op Linux)?
  4. Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?
  5. Wat gebeurt er in het algemeen met de waarde 3 als de C-functie main eindigt met „return 3;”?

Vergelijkingen bij dit onderwerp