Linker, Loader und ausführbare Formate

Welche Aussage zur Behandlung schwacher Symbole (Weak Symbols) beim Linker ist richtig?

  1. AEin schwaches Symbol hat stets Vorrang vor anderen Definitionen
  2. BGibt es eine normale (starke) Definition gleichen Namens, wird diese verwendet, sonst die schwache
  3. CDateien mit schwachen Symbolen können nicht gelinkt werden
Antwort und Erläuterung anzeigen

Antwort: B. Gibt es eine normale (starke) Definition gleichen Namens, wird diese verwendet, sonst die schwache

Ein schwaches Symbol ist eine Ersatzdefinition nach dem Prinzip „verwende diese, wenn es keine andere Definition gibt“. In Embedded-Software wird häufig das Standardverhalten von Interrupt-Handlern als schwaches Symbol bereitgestellt, sodass es ersetzt wird, wenn die Anwenderin oder der Anwender eine Funktion gleichen Namens schreibt. Überschneiden sich starke Definitionen untereinander, entsteht der Fehler „Mehrfachdefinition“; eine Überschneidung mit einer schwachen Definition ist kein Fehler.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Was ist der Hauptzweck des „Name Mangling“, bei dem der C++-Compiler Symbolnamen durch Anfügen von Informationen wie Argumenttypen an den Funktionsnamen bildet?
  2. Welcher Verwendungszweck der Linux-Funktion dlopen (entspricht LoadLibrary unter Windows) ist am treffendsten?
  3. Wie wird der physische Speicher genutzt, wenn 100 Prozesse dieselbe Shared Library verwenden?
  4. Beim Disassemblieren einer Objektdatei hatte das Sprungziel des Befehls, der die externe Funktion printf aufruft, einen vorläufigen Wert wie 0. Wann wird dieser Wert korrekt eingetragen?
  5. Welche Aufgabe hat ein in der Embedded-Entwicklung verwendetes Linker-Skript?

Vergleiche zu diesem Thema