Linker, loader en uitvoerbare formaten

Welk voordeel van dynamisch linken (gedeelde bibliotheken) is juist?

  1. AHet werkt altijd, ook als de bibliotheek in de uitvoeromgeving ontbreekt
  2. BMeerdere programma's kunnen één bibliotheek in het geheugen delen, en bij een update van de bibliotheek wordt de correctie zonder opnieuw bouwen verwerkt
  3. COpstartverwerking is helemaal niet meer nodig en het start altijd sneller dan statisch linken
Antwoord en toelichting tonen

Antwoord: B. Meerdere programma's kunnen één bibliotheek in het geheugen delen, en bij een update van de bibliotheek wordt de correctie zonder opnieuw bouwen verwerkt

Bij dynamisch linken legt het uitvoerbare bestand alleen vast „welke functie van welke gedeelde bibliotheek wordt gebruikt”, en tijdens uitvoering laadt de dynamische linker de bibliotheek en koppelt die. Omdat de code van een gedeelde bibliotheek niet wordt herschreven, kan één kopie in het fysieke geheugen door veel processen worden gedeeld. Ook correcties van fouten en kwetsbaarheden vereisen alleen het vervangen van de bibliotheek. Het koppelen kost bij het opstarten echter moeite.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Een dynamisch gelinkt programma werd naar een andere computer gekopieerd en uitgevoerd, maar startte niet. Wat is de meest waarschijnlijke oorzaak?
  2. Wat bouwt de linker in het uitvoerbare bestand in als er samen met een statische bibliotheek (.a-bestand) wordt gelinkt?
  3. Bij de GNU-linker kan een fout „undefined reference” optreden als een statische bibliotheek vóór het objectbestand dat haar gebruikt wordt geschreven, zoals in „gcc -lmylib main.o”. Wat is de juiste reden?
  4. Welke omschrijving van position-independent code (PIC) is juist?
  5. Wat is de juiste rol van de GOT (global offset table) die bij gedeelde bibliotheken wordt gebruikt?

Vergelijkingen bij dit onderwerp