1

我们在 CentOS 7 中使用 devtoolset-10(操作系统中 gcc 的“实际”默认版本是 4.8.5,但在 devtoolset 中我们使用 10.2.1 版本,这是项目的实际实际版本)。

命令gcc --version返回 10.2.1,但是在我们运行的目标文件编译不成功后ldd target_file,这表示 target_file 与/lib64/libstdc++.so.6文件链接,该文件支持旧版本的 gcc(strings -a /lib64/libstdc++.so.6 | grep GCC返回 4.8 版本的 gcc)

TL;博士

问题source <...>/devtoolset-10/enable:命令后取消链接 gcc 相关的共享对象和库

4

1 回答 1

1

Developer Toolset 使用混合链接模型。libstdc++使用它构建的程序尽可能使用系统库。丢失的位(那些在后来的 C++ 版本中添加的)是通过静态链接自动提供的。

因此,Developer Toolset 可用于使用较新的 GCC 版本构建应用程序。但它不能用于运行在其他发行版上构建的应用程序,使用较新的 GCC 版本(假设这是您正在尝试做的事情)。

于 2021-09-11T20:57:46.450 回答