Linker, loader en uitvoerbare formaten

Wanneer wordt bij gedeelde bibliotheken op Linux het versienummer van de soname, zoals de „.1” in libfoo.so.1, in het algemeen verhoogd?

  1. AWanneer ook maar één fout is verholpen
  2. BWanneer het bibliotheekbestand naar een andere map is verplaatst
  3. CBij een wijziging die de ABI-compatibiliteit met oude programma's verbreekt, zoals het veranderen van functieargumenten of de indeling van structuren
Antwoord en toelichting tonen

Antwoord: C. Bij een wijziging die de ABI-compatibiliteit met oude programma's verbreekt, zoals het veranderen van functieargumenten of de indeling van structuren

Een dynamisch gelinkt programma gebruikt tijdens uitvoering de gedeelde bibliotheek die met de soname is opgegeven. Bij een compatibiliteitsbehoudende correctie volstaat vervangen met dezelfde soname en wordt dit in alle programma's verwerkt. Wijzigt men daarentegen argumenttypen of de grootte van structuren, dan zouden oude programma's op onjuiste aannames aanroepen, dus wordt het soname-nummer verhoogd en als een andere bibliotheek behandeld, zodat de oude versie ernaast kan bestaan.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wat is er te weten te komen als op Linux het commando ldd op een uitvoerbaar bestand wordt gebruikt?
  2. Welke combinatie van uitvoerbare bestandsformaten die op de belangrijkste OS'en worden gebruikt, is juist?
  3. Wat gebeurt er in het algemeen op Linux en dergelijke als recursie te diep wordt en de bovengrens van de stack wordt overschreden?
  4. Welke uitspraak is juist over de waarde bij het eerste gebruik van lokale en globale variabelen in C waarvoor geen beginwaarde is geschreven?
  5. Bij herhaald malloc en free kan het voorkomen dat, ook al is het totaal aan vrij geheugen ruim voldoende, een groot gebied niet meer in één keer kan worden gereserveerd. Hoe heet dit verschijnsel?

Vergelijkingen bij dit onderwerp