Linker, Loader und ausführbare Formate

Welche Aussage zum statischen Linken ist richtig?

  1. ADer Code der verwendeten Bibliothek wird in die ausführbare Datei kopiert und mit ihr verbunden
  2. BBei jeder Ausführung des Programms wird die Bibliothek geladen und verbunden
  3. COhne Bibliotheken wird die gesamte Verarbeitung in einer einzigen Quelldatei geschrieben
Antwort und Erläuterung anzeigen

Antwort: A. Der Code der verwendeten Bibliothek wird in die ausführbare Datei kopiert und mit ihr verbunden

Beim statischen Linken entnimmt der Linker die benötigten Funktionen einer statischen Bibliothek (unter Linux .a-Dateien) und bindet sie in die ausführbare Datei ein. Das Programm läuft auch ohne die Bibliothek in der Ausführungsumgebung und benötigt beim Start keinen Verbindungsaufwand, doch die ausführbare Datei wird größer, und jedes Programm, das dieselbe Bibliothek nutzt, trägt eine eigene Kopie. Fehlerkorrekturen der Bibliothek wirken sich erst nach einer Neuerstellung aus.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welcher Vorteil des dynamischen Linkens (Shared Libraries) ist richtig?
  2. Ein dynamisch gelinktes Programm startete nicht, nachdem es auf einen anderen Computer kopiert und ausgeführt wurde. Was ist die wahrscheinlichste Ursache?
  3. Was bindet der Linker in die ausführbare Datei ein, wenn er mit einer statischen Bibliothek (.a-Datei) linkt?
  4. Beim GNU-Linker kann es zu einem Fehler wegen einer undefinierten Referenz kommen, wenn eine statische Bibliothek wie in „gcc -lmylib main.o“ vor der Objektdatei steht, die sie verwendet. Welcher Grund ist richtig?
  5. Welche Aussage zum positionsunabhängigen Code (PIC) ist richtig?

Vergleiche zu diesem Thema