Linker, loader en uitvoerbare formaten

Hoe worden zwakke symbolen (weak symbols) door de linker behandeld?

  1. AEen zwak symbool krijgt altijd voorrang boven andere definities
  2. BAls er een gewone (sterke) definitie met dezelfde naam is, wordt die gebruikt, en anders de zwakke definitie
  3. CEen bestand met een zwak symbool kan niet worden gelinkt
Antwoord en toelichting tonen

Antwoord: B. Als er een gewone (sterke) definitie met dezelfde naam is, wordt die gebruikt, en anders de zwakke definitie

Een zwak symbool is een reservedefinitie van het type „gebruik deze als er geen andere definitie is”. In embedded software wordt vaak de standaardverwerking van een interrupthandler als zwak symbool klaargezet, zodat die wordt vervangen als de gebruiker een functie met dezelfde naam schrijft. Als sterke definities elkaar overlappen, volgt de fout multiple definition, maar overlap met een zwakke definitie is geen fout.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. 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?
  2. Waarvoor wordt de Linux-functie dlopen (overeenkomend met LoadLibrary op Windows) het meest passend gebruikt?
  3. Hoe wordt het fysieke geheugen gebruikt als 100 processen dezelfde gedeelde bibliotheek gebruiken?
  4. Bij het disassembleren van een objectbestand bleek het sprongdoel van de instructie die de externe functie printf aanroept een voorlopige waarde zoals 0 te zijn. Wanneer wordt deze waarde juist ingevuld?
  5. Wat is de juiste rol van het linkerscript dat bij embedded ontwikkeling wordt gebruikt?

Vergelijkingen bij dit onderwerp