Linker, Loader und ausführbare Formate

Was bindet der Linker in die ausführbare Datei ein, wenn er mit einer statischen Bibliothek (.a-Datei) linkt?

  1. AAlle Objektdateien in der Bibliothek
  2. BNur den Dateinamen der Bibliothek, aber keinen Code
  3. CNur diejenigen Objektdateien der Bibliothek, die zur Auflösung undefinierter Referenzen benötigt werden
Antwort und Erläuterung anzeigen

Antwort: C. Nur diejenigen Objektdateien der Bibliothek, die zur Auflösung undefinierter Referenzen benötigt werden

Eine statische Bibliothek ist ein Archiv, das viele Objektdateien zusammenfasst. Der Linker entnimmt dem Archiv nur die Objektdateien, die Symbole definieren, für die noch keine Definition gefunden wurde, und bindet sie ein. Selbst bei einer Bibliothek mit vielen Funktionen wie der Standardbibliothek wird die ausführbare Datei daher nur um den Anteil der verwendeten Funktionen größer.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. 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?
  2. Welche Aussage zum positionsunabhängigen Code (PIC) ist richtig?
  3. Welche Aufgabe hat die bei Shared Libraries verwendete GOT (Global Offset Table)?
  4. Welche Aussage trifft beim dynamischen Linken zu, wenn mit der PLT (Procedure Linkage Table) späte Bindung (Lazy Binding) verwendet wird?
  5. Welche Aufgabe hat der dynamische Linker (z. B. ld.so), der beim Start eines dynamisch gelinkten Programms unter Linux tätig wird?

Vergleiche zu diesem Thema