我的程序依赖于 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