Stellen Sie ein C++-Programm mit C++11-Unterstützung auf einem älteren CentOS-Computer bereit

Stellen Sie ein C++-Programm mit C++11-Unterstützung auf einem älteren CentOS-Computer bereit

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

  1. Sollte ich die Version von libstdc++.so.6 überprüfen, wenn sie kleiner als 0.19 ist?
  2. Wie aktualisiere ich libstdc++ auf libstdc++.so.6.0.19?

Antwort1

libstc++.so.6.0.13und libstdc++.so.0.19sind 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 Xdie Hauptnummer und Yund ZNebennummern sind. Wenn Xerhöht wird, ist die neue Version inkompatibel mit der alten Version. Eine Erhöhung Ybedeutet, dass eine kompatible Änderung an der ABI vorgenommen wurde. Eine Änderung Zbedeutet, 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

verwandte Informationen