
Моя программа зависит от libstdc++.so.6, которая зависит от /lib64/libstdc++.so.6.0.19
Но в моей старой CentOS есть libstdc++.so.6 => libstdc++.so.6.0.13
Вопросы
- Стоит ли проверять версию libstdc++.so.6, если она меньше 0.19?
- Как обновить libstdc++ до libstdc++.so.6.0.19?
решение1
libstc++.so.6.0.13
и libstdc++.so.0.19
совместимы. Смотритеlibstdc++ руководствоУ вас не должно возникнуть проблем с запуском вашей программы на машине CentOS.
В общем случае общие библиотеки в Linux должны следовать следующему соглашению о версиях: libfoo.so.X.Y.Z
, где X
— основной номер, а Y
и Z
— второстепенные номера. Когда X
увеличивается, новая версия несовместима со старой. Увеличение Y
означает, что в ABI внесено совместимое изменение. Изменение Z
означает, что была исправлена какая-то ошибка, но интерфейс не изменился. Исполняемые двоичные файлы содержат ссылки на используемые ими общие библиотеки, но эти ссылки содержат только основной номер. Фактическая используемая библиотека определяется символической ссылкой библиотеки на машине, на которой запущена программа, например:
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25