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?
- AWenn auch nur ein einziger Fehler behoben wurde
- BWenn die Bibliotheksdatei in ein anderes Verzeichnis verschoben wurde
- 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.