Wat is Statische bibliotheek?

Archief waarin veel objectbestanden zijn samengevoegd (.a onder Linux). Bij statisch linken haalt de linker alleen de benodigde objecten eruit en neemt die op in het uitvoerbare bestand.

Japanse benaming: 静的ライブラリ

“Statische bibliotheek” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over Statische bibliotheek

Wat bouwt de linker in het uitvoerbare bestand in als er samen met een statische bibliotheek (.a-bestand) wordt gelinkt?

  1. AAlle objectbestanden in de bibliotheek
  2. BAlleen de bestandsnaam van de bibliotheek, geen code
  3. CAlleen die objectbestanden in de bibliotheek die nodig zijn om onopgeloste verwijzingen op te lossen
Antwoord en toelichting tonen

Antwoord: C. Alleen die objectbestanden in de bibliotheek die nodig zijn om onopgeloste verwijzingen op te lossen

Een statische bibliotheek is een archief waarin veel objectbestanden zijn samengevoegd. De linker haalt uit het archief alleen de objectbestanden die symbolen definiëren waarvoor nog geen definitie is gevonden en bouwt die in. Daarom groeit het uitvoerbare bestand ook bij een bibliotheek met veel functies, zoals de standaardbibliotheek, alleen met de gebruikte functies.

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?

  1. ADe linker verwerkt van links naar rechts en haalt functies waarnaar op het moment van het lezen van de bibliotheek nog niet is verwezen niet op
  2. BEen bibliotheek mag per regel maar één keer, helemaal aan het eind van het commando, worden geschreven
  3. CAls de bibliotheek vooraan staat, wordt de inhoud van de bibliotheek gewist
Antwoord en toelichting tonen

Antwoord: A. De linker verwerkt van links naar rechts en haalt functies waarnaar op het moment van het lezen van de bibliotheek nog niet is verwezen niet op

De GNU-linker verwerkt bestanden in de volgorde waarin ze op de opdrachtregel staan en haalt bij een statische bibliotheek alleen de objectbestanden op die „nog niet gevonden definities” van verwijzingen oplossen. Als de bibliotheek eerst wordt geschreven, zijn er op dat moment nog geen verwijzingen van main.o, dus wordt niets opgehaald, en ook als main.o daarna wordt gelezen, wordt niet teruggegaan om te zoeken. Daarom staat de bibliotheek in principe achter het gebruikende bestand.

“Statische bibliotheek” in de toelichting

Vragen met “Statische bibliotheek” (3)

  1. Wat bouwt de linker in het uitvoerbare bestand in als er samen met een statische bibliotheek (.a-bestand) wordt gelinkt?
  2. 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?
  3. Welke omschrijving van statisch linken is juist?

Vergelijkingen met deze term

Verwante termen

Linker Objectbestand Statisch linken Numerieke apertuur (NA) ASLR BSS-sectie Dynamisch linken Dynamische linker ELF Entry point

Naar de woordenlijst