Wat is Dynamische linker?

Software die bij het starten van een dynamisch gelinkt programma gedeelde bibliotheken zoekt en laadt, relocatie en symboolkoppeling uitvoert en daarna het programma laat starten. Bijvoorbeeld ld.so in Linux.

Japanse benaming: 動的リンカ

“Dynamische linker” komt voor in 10 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over Dynamische linker

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.

“Dynamische linker” in de toelichting

Vragen met “Dynamische linker” (10)

  1. Wat is de juiste rol van de dynamische linker (zoals ld.so) die werkt bij het starten van een dynamisch gelinkt programma op Linux?
  2. Welke omschrijving van de relocatie die de linker uitvoert, is juist?
  3. Welk voordeel van dynamisch linken (gedeelde bibliotheken) is juist?
  4. Een dynamisch gelinkt programma werd naar een andere computer gekopieerd en uitgevoerd, maar startte niet. Wat is de meest waarschijnlijke oorzaak?
  5. Wat is de juiste rol van de GOT (global offset table) die bij gedeelde bibliotheken wordt gebruikt?
  6. Welke omschrijving is juist van lazy binding met de PLT (procedure linkage table) bij dynamisch linken?
  7. Wat doet de loader van het OS bij het starten van een programma (zoals execve op Linux)?
  8. Bij het disassembleren van een objectbestand bleek het sprongdoel van de instructie die de externe functie printf aanroept een voorlopige waarde zoals 0 te zijn. Wanneer wordt deze waarde juist ingevuld?
  9. Welk voordeel is juist van het zetten van de symboolzichtbaarheid (visibility) op „hidden” voor interne functies, terwijl bij het maken van een gedeelde bibliotheek alleen de van buiten gebruikte functies worden gepubliceerd?
  10. Welk mechanisme waardoor in C++ de constructors van globale objecten vóór main worden uitgevoerd, is juist?

Verwante termen

Dynamisch linken GOT (global offset table) Relocatie (relocation) Linker Via PLT (procedure linkage table) Gedeelde bibliotheek (shared library) Numerieke apertuur (NA) Loader Objectbestand

Naar de woordenlijst