我最近将 CentOS 上的 gcc 版本从 4.7 更新到 5.4,但现在编译程序时出现以下错误
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
我找到了一些解决方案,但我仍然无法解决问题。这些是我用
whereis gcc
找到的路径
gcc: /usr/bin/gcc /usr/lib/gcc /usr/local/bin/gcc /usr/local/lib/gcc /usr/libexec/gcc /usr/share/man/man1/gcc.1.gz
并在 CentOS 上使用了这个 libstdc 包。
尝试
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
也许对某人会有帮助: 我安装了devtoolset-7,但没有GLIBCXX_3.4.21,最高版本是GLIBCXX_3.4.19。很长一段时间我都在寻找解决方案。对我有用的:我克隆了 gcc 7.3 存储库,进行了构建并安装。然后将 libstdc++.so.6 和 libstdc++.so.6.0.24 复制到 devtools-7, lib64 文件夹中,就可以工作了。
我没有 sudo 访问我的 CentOS 机器的权限,所以我用 conda 安装了 gcc。如果您使用 conda 安装了 gcc,则上述答案将不起作用。 检查你的 gcc 安装路径为:
$ which gcc
输出:
/home/ags/miniconda3/envs/GE/bin/gcc
这表明 gcc 安装在
GE
conda 环境中,现在导出 LD_LIBRARY_PATH 作为此环境中 lib
目录的路径。
export LD_LIBRARY_PATH=/home/ags/miniconda3/envs/GE/lib:$LD_LIBRARY_PATH
希望这有帮助。
只是您的
libstdc++.so.6
不包括 GLIBCXX_3.4.21
,所以您需要替换该库。
当我用
libstdc++.so.6.0.28
检查 strings libstdc++.so.6.0.28 | grep GLIBCXX
时,输出是:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH
因此,使用
libstdc++.so.6.0.28
重新创建符号将解决您的问题(也解决了我的问题;))。
找到你的 gcc 安装位置并更新 LD_LIBRARY_PATH
例如
sudo yum provides libstdc++.so.6
注意:由于我需要版本 3.4.22+,所以我可以将其更新到 3.4.26。其他版本都一样
cd /usr/local/lib64
sudo wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
cp libstdc++.so.6.0.26 /usr/lib64
cd /usr/lib64
ls -l | grep libstdc++
可能会显示如下:
libstdc++.so.6 ->libstdc++.so.6.0.19
sudo rm libstdc++.so.6
然后,重新链接它。
sudo ln -s libstdc++.so.6.0.26 libstdc++.so.6
好的,查看最新链接
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
可能会显示如下:
GLIBCXX_3.4
…
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_DEBUG_MESSAGE_LENGTH
完成!