前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >libstdc++库版本较低的解决办法

libstdc++库版本较低的解决办法

作者头像
用户7592569
发布2020-07-27 15:36:55
8.4K0
发布2020-07-27 15:36:55
举报
文章被收录于专栏:量子化学量子化学

小编最近使用一个程序xxx.exe时,出现了如下报错:

xxx.exe: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by xxx.exe)

在此把解决方法做个备忘。

1. 查看libstdc++.so.6库的信息

看了一下/lib64目录下的libstdc++.so.6,是一个软链接,链接到同目录下的libstdc++.so.6.0.19:

代码语言:javascript
复制
lrwxrwxrwx. 1 root root 19 Jan  1  2000 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.19

使用如下命令,可以查看支持的GLIBCXX的版本:

代码语言:javascript
复制
strings /lib64/libstdc++.so.6 | grep GLIBC

结果如下:

代码语言:javascript
复制
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
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

所以本机上C++标准库的版本只有19,而程序需要20,因此需要更新这个库。

2. 获取高版本的libstdc++库

首先在本机上查看一下,使用如下命令:

代码语言:javascript
复制
find / -name libstdc++.so.6*

结果如下:

代码语言:javascript
复制
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/opt/intel/clck/2019.5/lib/intel64/libstdc++.so.6
/opt/intel/clck/2019.5/lib/intel64/libstdc++.so.6.0.20
/opt/intel/inspector_2019.5.0.602103/lib64/libstdc++.so.6
/opt/intel/inspector_2019.5.0.602103/lib64/libstdc++.so.6.0.21
/opt/intel/inspector_2019.5.0.602103/lib32/libstdc++.so.6
/opt/intel/inspector_2019.5.0.602103/lib32/libstdc++.so.6.0.21
/opt/intel/advisor_2019.5.0.602216/lib64/libstdc++.so.6.0.21
/opt/intel/advisor_2019.5.0.602216/lib64/libstdc++.so.6
/opt/intel/advisor_2019.5.0.602216/lib32/libstdc++.so.6
/opt/intel/advisor_2019.5.0.602216/lib32/libstdc++.so.6.0.21
/opt/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/lib/libstdc++.so.6.0.24
/opt/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/lib/libstdc++.so.6
/opt/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/opt/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
/opt/anaconda3/lib/libstdc++.so.6
/opt/anaconda3/lib/libstdc++.so.6.0.24
/opt/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/opt/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24

可以看到,在小编的机器上,恰好在intel编译器和anaconda中,都有更高版本的libstdc++库。如果机器上没有更高版本的库,可以在网上找到。

例如,小编选了

/opt/anaconda3/lib/libstdc++.so.6.0.24

这个库文件,用上面同样的命令,可以看到支持到GLIBCXX_3.4.24,满足需要了。

3. 更新目标目录下的libstdc++库

将/opt/anaconda3/lib下的 libstdc++.so.6.0.24 复制到/lib64下:

代码语言:javascript
复制
cp /opt/anaconda3/lib/libstdc++.so.6.0.24 /lib64/

进入/lib64,将原来的软链接删除:

代码语言:javascript
复制
rm libstdc++.so.6

重新进行链接:

代码语言:javascript
复制
ln -s libstdc++.so.6.0.24 libstdc++.so.6

程序便可正常使用了。

参考资料:

https://www.jianshu.com/p/ef510e0def25

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档