Wat is Linker?

Software die meerdere objectbestanden en bibliotheken samenvoegt, symbolen oplost en relocatie uitvoert om een uitvoerbaar bestand of gedeelde bibliotheek te maken.

Japanse benaming: リンカ

“Linker” komt voor in 18 oefenvragen uit 4 onderwerpen, bijv. Linker, loader en uitvoerbare formaten, Packaging en montage, Instructieset en assembly.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over Linker

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.

Welke omschrijving van de symboolresolutie die de linker uitvoert, is juist?

  1. ADe naam van een functie of variabele die in het ene bestand wordt gebruikt, wordt gekoppeld aan de definitie ervan in een ander bestand
  2. BVariabelennamen in de broncode worden vervangen door korte namen, waardoor ze moeilijk leesbaar worden
  3. CUitdrukkingen met wiskundige symbolen worden opnieuw tot getallen uitgerekend
Antwoord en toelichting tonen

Antwoord: A. De naam van een functie of variabele die in het ene bestand wordt gebruikt, wordt gekoppeld aan de definitie ervan in een ander bestand

Als main.c de functie sum aanroept en sum.c de inhoud ervan definieert, bevat main.o de informatie „verwijst naar sum” en sum.o „definieert sum”. De linker verzamelt de symbooltabellen van alle objectbestanden en zoekt voor elke verwijzing één bijbehorende definitie. Als geen definitie wordt gevonden, volgt de fout „undefined reference”, en bij twee of meer definities „multiple definition”.

“Linker” in de toelichting

Vragen met “Linker” (18)

  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. Wat bouwt de linker in het uitvoerbare bestand in als er samen met een statische bibliotheek (.a-bestand) wordt gelinkt?
  5. 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?
  6. Hoe worden zwakke symbolen (weak symbols) door de linker behandeld?
  7. Hoe heet het defect bij reflow waarbij een kleine component zoals een chipweerstand aan één kant omhoogkomt en rechtop gaat staan?
  8. Wat is de juiste combinatie om in RISC-V de constante 0x12345FFF met de twee instructies lui en addi te maken?
  9. Welke algemene volgorde waarin uit een C-programma een uitvoerbaar bestand ontstaat is juist?
  10. Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?
  11. 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?
  12. Wat is de juiste betekenis van „extern int count;” in C?
  13. Welke omschrijving van statisch linken is juist?
  14. Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?
  15. 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?

Verwante termen

Relocatie (relocation) Objectbestand Dynamische linker Statische bibliotheek Symboolresolutie Dynamisch linken Assembler Zwak symbool (weak symbol) Immediate (directe waarde) Symbooltabel

Naar de woordenlijst