Linker, loader en uitvoerbare formaten

Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?

  1. AHet is een compleet programma dat rechtstreeks door het OS kan worden uitgevoerd
  2. BHet is alleen de gecomprimeerde broncode en bevat geen machinecode
  3. CHet bevat machinecode, maar de adressen van functies en variabelen in andere bestanden zijn nog niet bepaald
Antwoord en toelichting tonen

Antwoord: C. Het bevat machinecode, maar de adressen van functies en variabelen in andere bestanden zijn nog niet bepaald

Een objectbestand bevat de machinecode die uit de functies van dat bestand is vertaald, de beginwaarden van variabelen, een lijst van gedefinieerde en gerefereerde namen (symbooltabel) en een lijst van plaatsen waar later adressen moeten worden ingevuld (relocatie-informatie). Instructies die een functie in een ander bestand aanroepen, zoals printf, hebben een voorlopige waarde omdat het adres onbekend is. De linker voegt meerdere objectbestanden samen, bepaalt de adressen en maakt een uitvoerbaar bestand.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wat is de juiste hoofdtaak van de linker?
  2. Welke omschrijving van de symboolresolutie die de linker uitvoert, is juist?
  3. Welke omschrijving van de relocatie die de linker uitvoert, is juist?
  4. Bij het linken van een C-programma verschijnt de fout „undefined reference to `foo'”. Wat is de meest waarschijnlijke oorzaak?
  5. 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?

Vergelijkingen bij dit onderwerp