Linker, loader en uitvoerbare formaten

Wat is de juiste hoofdtaak van de linker?

  1. AMeerdere objectbestanden en bibliotheken samenvoegen, namen aan adressen koppelen en een uitvoerbaar bestand maken
  2. BSyntaxisfouten in de broncode vinden en melden
  3. CHet geheugen van een lopend programma automatisch vrijgeven wanneer het niet meer wordt gebruikt
Antwoord en toelichting tonen

Antwoord: A. Meerdere objectbestanden en bibliotheken samenvoegen, namen aan adressen koppelen en een uitvoerbaar bestand maken

De linker koppelt de namen (symbolen) waarnaar in elk objectbestand wordt verwezen aan de ergens gedefinieerde entiteiten (symboolresolutie), zet de code en data van elk bestand achter elkaar om de definitieve adressen te bepalen en herschrijft de voorlopige adressen in instructies naar de juiste waarden (relocatie). Zo nodig haalt hij functies uit bibliotheken en voegt ze toe. Zo ontstaat een uitvoerbaar bestand dat het OS kan laden en uitvoeren.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welke omschrijving van de symboolresolutie die de linker uitvoert, is juist?
  2. Welke omschrijving van de relocatie die de linker uitvoert, is juist?
  3. Bij het linken van een C-programma verschijnt de fout „undefined reference to `foo'”. Wat is de meest waarschijnlijke oorzaak?
  4. In zowel a.c als b.c is een globale functie void init(void) met dezelfde naam gedefinieerd zonder static, en de bestanden worden gelinkt. Wat gebeurt er?
  5. Wat is het juiste effect als in C een functie met static wordt gedefinieerd (bijvoorbeeld static int helper(void))?

Vergelijkingen bij dit onderwerp