在较旧的 CentOS 机器上部署支持 c++11 的 c++ 程序

在较旧的 CentOS 机器上部署支持 c++11 的 c++ 程序

我的程序依赖于 libstdc++.so.6,它依赖于 /lib64/libstdc++.so.6.0.19

但我的旧 CentOS 有 libstdc++.so.6 => libstdc++.so.6.0.13

问题

  1. 如果 libstdc++.so.6 的版本低于 0.19,我应该检查它吗?
  2. 如何将 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是主编号, 和YZ次编号。当X递增时,新版本与旧版本不兼容。递增Y意味着对 ABI 进行了兼容的更改。更改Z意味着修复了一些错误,但界面没有改变。可执行二进制文件包含对其使用的共享库的引用,但这些引用仅包含主编号。实际使用的库由运行程序的机器上的库符号链接决定,例如:

/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25

相关内容