
Mein Programm hängt von libstdc++.so.6 ab, das wiederum von /lib64/libstdc++.so.6.0.19 abhängt.
Aber mein älteres CentOS hat libstdc++.so.6 => libstdc++.so.6.0.13
Fragen
- Sollte ich die Version von libstdc++.so.6 überprüfen, wenn sie kleiner als 0.19 ist?
- Wie aktualisiere ich libstdc++ auf libstdc++.so.6.0.19?
Antwort1
libstc++.so.6.0.13
und libstdc++.so.0.19
sind kompatibel. Siehe dielibstdc++-Handbuch. Sie sollten kein Problem haben, Ihr Programm auf der CentOS-Maschine auszuführen.
Im Allgemeinen sollten gemeinsam genutzte Bibliotheken unter Linux der folgenden Versionskonvention folgen: libfoo.so.X.Y.Z
, wobei X
die Hauptnummer und Y
und Z
Nebennummern sind. Wenn X
erhöht wird, ist die neue Version inkompatibel mit der alten Version. Eine Erhöhung Y
bedeutet, dass eine kompatible Änderung an der ABI vorgenommen wurde. Eine Änderung Z
bedeutet, dass ein Fehler behoben wurde, die Schnittstelle jedoch unverändert bleibt. Ausführbare Binärdateien enthalten Verweise auf die gemeinsam genutzten Bibliotheken, die sie verwenden, aber diese Verweise enthalten nur die Hauptnummer. Die tatsächlich verwendete Bibliothek wird durch den symbolischen Bibliothekslink auf dem Computer bestimmt, auf dem das Programm ausgeführt wird, zum Beispiel:
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25