Linker, loader en uitvoerbare formaten

Wat gebeurt er als het commando strip op een uitvoerbaar bestand wordt gebruikt?

  1. ADe machinecode-instructies worden geoptimaliseerd en de uitvoering wordt sneller
  2. BHet uitvoerbare bestand wordt versleuteld en anderen kunnen het niet uitvoeren
  3. CDe symbooltabel en debuginformatie worden verwijderd, waardoor het bestand kleiner wordt maar functienamen en dergelijke in een debugger minder zichtbaar zijn
Antwoord en toelichting tonen

Antwoord: C. De symbooltabel en debuginformatie worden verwijderd, waardoor het bestand kleiner wordt maar functienamen en dergelijke in een debugger minder zichtbaar zijn

Een uitvoerbaar bestand kan een symbooltabel met namen van functies en variabelen en debuginformatie met de koppeling aan regels van de broncode bevatten. Deze zijn voor uitvoering niet nodig, dus met strip worden ze verwijderd en wordt het bestand kleiner. Omdat bij foutopsporing functienamen en regelnummers dan niet meer zichtbaar zijn, wordt de informatie van vóór het verwijderen soms apart bewaard. Symbolen die voor dynamisch linken nodig zijn, blijven behouden.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Hoe worden zwakke symbolen (weak symbols) door de linker behandeld?
  2. Wat is het belangrijkste doel van name mangling in C++, waarbij de compiler symboolnamen maakt door informatie zoals argumenttypen aan de functienaam toe te voegen?
  3. Waarvoor wordt de Linux-functie dlopen (overeenkomend met LoadLibrary op Windows) het meest passend gebruikt?
  4. Hoe wordt het fysieke geheugen gebruikt als 100 processen dezelfde gedeelde bibliotheek gebruiken?
  5. 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?

Vergelijkingen bij dit onderwerp