前因

最近在编译leveldb时,碰到一个问题:GLIBCXX_3.4.20 not found
这个提示已经比较明显了,是本地缺少重要的二进制LIB库文件。

本地的二进制文件一般在/usr/lib64下面,因为我使用的是64位系统。

处理

查看本地系统的 GLIBCXX_版本

1
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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_DEBUG_MESSAGE_LENGTH

刚好到 3.4.19,就是没有 3.4.20

三种解决思路

1.在本机上找

如果找到的话,就可以直接使用

1
find / -name "libstdc++.so*"

找到libstdc++.so.6.0.25这个包。

先备份原来的文件,如果新的组件有问题,就扑街了,再将找到的文件放入/usr/lib64,重新建立软链接。
先备份原来的包,

1
2
mv libstdc++.so.6 ~/libstdc++.so.6.bak
ln -snf libstdc++.so.6.0.25 libstdc++.so.6

2.手动下载

系统中没有的话,只能自己下载了

1
wget https://adbin.top/packages/lib64.tar.gz

可以自动选择缺失部份:
https://pkgs.org/download/libstdc++.so.6

3.yum 安装缺失文件

1
2
3
4
5
6
7
sh-4.2# yum provides libstdc
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: download.cf.centos.org
* extras: download.cf.centos.org
* updates: download.cf.centos.org
No matches found