Linker, Loader und ausführbare Formate

Welche Aussage zur Adresse, an der das Betriebssystem bei einem C-Programm die Ausführung zuerst beginnt (Entry Point), ist richtig?

  1. ASie ist stets der Anfang der Funktion main
  2. BSie ist als erstes Byte der ausführbaren Datei festgelegt
  3. CSie ist üblicherweise nicht main, sondern Startcode wie _start, der Initialisierungen durchführt und dann main aufruft
Antwort und Erläuterung anzeigen

Antwort: C. Sie ist üblicherweise nicht main, sondern Startcode wie _start, der Initialisierungen durchführt und dann main aufruft

Der Linker bindet das vom C-Laufzeitsystem bereitgestellte Startobjekt (z. B. crt1.o) in das Programm ein und verwendet darin _start als Einsprungpunkt. _start entnimmt die Kommandozeilenargumente dem Stack, initialisiert die Standardbibliothek und globale Objekte und ruft dann main auf. Kehrt main zurück, ruft es mit dem Rückgabewert exit auf und führt die Beendigung durch.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Was geschieht im Allgemeinen mit dem Wert 3, wenn die Funktion main in C mit „return 3;“ endet?
  2. Was geschieht, wenn der Befehl strip auf eine ausführbare Datei angewendet wird?
  3. Welche Aussage zur Behandlung schwacher Symbole (Weak Symbols) beim Linker ist richtig?
  4. Was ist der Hauptzweck des „Name Mangling“, bei dem der C++-Compiler Symbolnamen durch Anfügen von Informationen wie Argumenttypen an den Funktionsnamen bildet?
  5. Welcher Verwendungszweck der Linux-Funktion dlopen (entspricht LoadLibrary unter Windows) ist am treffendsten?

Vergleiche zu diesem Thema