Linker, Loader und ausführbare Formate

Welcher Vorteil des dynamischen Linkens (Shared Libraries) ist richtig?

  1. ADas Programm läuft immer, auch wenn die Bibliothek in der Ausführungsumgebung fehlt
  2. BMehrere Programme können eine Bibliothek im Speicher gemeinsam nutzen, und bei einer Aktualisierung der Bibliothek wirken Korrekturen ohne Neuerstellung
  3. CVerarbeitung beim Start entfällt vollständig, sodass der Start stets schneller ist als beim statischen Linken
Antwort und Erläuterung anzeigen

Antwort: B. Mehrere Programme können eine Bibliothek im Speicher gemeinsam nutzen, und bei einer Aktualisierung der Bibliothek wirken Korrekturen ohne Neuerstellung

Beim dynamischen Linken wird in der ausführbaren Datei nur vermerkt, welche Funktion welcher Shared Library verwendet wird; zur Laufzeit lädt der dynamische Linker die Bibliothek und verbindet sie. Da der Code der Shared Library nicht überschrieben wird, kann eine einzige Kopie im physischen Speicher von vielen Prozessen gemeinsam genutzt werden. Auch die Behebung von Fehlern und Schwachstellen erfordert nur den Austausch der Bibliothek. Allerdings entsteht beim Start ein Verbindungsaufwand.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Ein dynamisch gelinktes Programm startete nicht, nachdem es auf einen anderen Computer kopiert und ausgeführt wurde. Was ist die wahrscheinlichste Ursache?
  2. Was bindet der Linker in die ausführbare Datei ein, wenn er mit einer statischen Bibliothek (.a-Datei) linkt?
  3. 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?
  4. Welche Aussage zum positionsunabhängigen Code (PIC) ist richtig?
  5. Welche Aufgabe hat die bei Shared Libraries verwendete GOT (Global Offset Table)?

Vergleiche zu diesem Thema