问题:
/lib64/libstdc++.so.6: version
CXXABI_1.3.8
not found
/lib64/libstdc++.so.6: version
CXXABI_1.3.9
not found
/lib64/libstdc++.so.6: version
GLIBCXX_3.4.21
not found
截图:
将现有版本的 gcc 升级
安装 Software Collections(SCL)
sudo yum install centos-release-scl
安装 devtoolset-8:
sudo yum install devtoolset-8
检查是否成功安装了 SCL 和 devtoolset-8:
scl --list
启用 devtoolset-8:
scl enable devtoolset-8 bash
检查 gcc 版本:
gcc -v
成功将 gcc 升级到了指定的版本。请注意,启用 devtoolset-8 的效果只在当前 shell 会话中生效。如果希望在每个新的 shell 会话中自动启用 devtoolset-8,请将
scl enable devtoolset-8 bash
添加到 shell 配置文件中(如 ~/.bashrc或/etc/profile)
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
这样每次打开终端时,devtoolset-8 都会自动启用。
升级完发现还是报以上错误
是因为新版本文件在/usr/local/lib64/ 内,而查找是从/usr/lib64 先的,因此需要将新文件拷贝到/usr/lib64 或创建软连接
cp /usr/local/lib64/libstdc++.so.6 /usr/lib64
从共享库文件中提取可读字符串查看是否有报错所缺内容
strings /usr/lib64/libstdc++.so.6 | grep CXXAB
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
更新下共享库缓存
sudo ldconfig
执行完问题解决文件可正常执行