Linker, Loader und ausführbare Formate

Wann wird bei Shared Libraries unter Linux die Versionsnummer des soname, wie das „.1“ in libfoo.so.1, im Allgemeinen erhöht?

  1. AWenn auch nur ein einziger Fehler behoben wurde
  2. BWenn die Bibliotheksdatei in ein anderes Verzeichnis verschoben wurde
  3. CWenn eine Änderung vorgenommen wurde, die die ABI-Kompatibilität mit alten Programmen aufhebt, etwa Änderungen von Funktionsargumenten oder des Aufbaus von Strukturen
Antwort und Erläuterung anzeigen

Antwort: C. Wenn eine Änderung vorgenommen wurde, die die ABI-Kompatibilität mit alten Programmen aufhebt, etwa Änderungen von Funktionsargumenten oder des Aufbaus von Strukturen

Dynamisch gelinkte Programme verwenden zur Laufzeit die über den soname angegebene Shared Library. Bei kompatiblen Korrekturen genügt es, die Bibliothek mit gleichem soname auszutauschen, und die Änderung wirkt für alle Programme. Wird dagegen der Typ von Argumenten oder die Größe von Strukturen geändert, würden alte Programme mit falschen Annahmen aufrufen; die soname-Nummer wird daher erhöht, damit die Bibliothek als eine andere behandelt wird und neben der alten Version bestehen kann.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Was lässt sich unter Linux erkennen, wenn der Befehl ldd auf eine ausführbare Datei angewendet wird?
  2. Welche Kombination der von den wichtigsten Betriebssystemen verwendeten Formate ausführbarer Dateien ist richtig?
  3. Was geschieht unter Linux u. a. im Allgemeinen, wenn eine zu tiefe Rekursion die Obergrenze des Stacks überschreitet?
  4. Welche Aussage zu den Werten lokaler und globaler Variablen ohne Initialwert zu Beginn ihrer Verwendung in C ist richtig?
  5. Wie heißt das Phänomen, dass sich nach wiederholtem malloc und free zwar insgesamt genug freier Speicher findet, aber ein großer zusammenhängender Bereich nicht mehr reserviert werden kann?

Vergleiche zu diesem Thema