glibcxx提示版本未找到
在linux上有些场景下so提示glibcxx版本未找到,本因是编译的glibc版本和当前linux下的glibc不一致导致的
gcc
#glibc
1.问题描述
[root@centos-7-node3 ~]# hugo --help
hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by hugo)
hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by hugo)
[root@centos-7-node3 ~]# hugo
hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by hugo)
hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by hugo)
[root@centos-7-node3 ~]# yum provides libstdc++.so.6
2.问题解决
本文是利用高版本的rpm提取对应符合so,做软连接替换
2.1check package
[root@centos-7-node3 glibc-2.18]# yum whatprovides */libstdc++.so.6
libstdc++-4.8.5-44.el7.i686 : GNU Standard C++ Library
Repo : os
Matched from:
Filename : /usr/lib/libstdc++.so.6
libstdc++-4.8.5-44.el7.x86_64 : GNU Standard C++ Library
Repo : os
Matched from:
Filename : /usr/lib64/libstdc++.so.6
2.2check version
//glibc version el7 2.17.x && el6 2.12.x
[root@centos-7-node3 ~]# strings /usr/lib64/libstdc++.so.6 | 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_DEBUG_MESSAGE_LENGTH
[root@centos-7-node3 ~]#
2.3download new viersion
- https://pkgs.org/ //centos8 to find
- http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm
2.4extact so && link new
rpm2cpio libstdc++-8.3.1-5.1.el8.x86_64.rpm |cpio -idv //extact files
[root@centos-7-node3 sb]# ll
total 452
-rw-r--r-- 1 root root 461772 Mar 31 09:49 libstdc++-8.3.1-5.1.el8.x86_64.rpm
drwxr-xr-x 5 root root 43 Mar 31 09:50 usr
[root@centos-7-node3 sb]# ll usr/lib64/
total 1624
lrwxrwxrwx 1 root root 19 Mar 31 09:50 libstdc++.so.6 -> libstdc++.so.6.0.25
-rwxr-xr-x 1 root root 1661376 Mar 31 09:50 libstdc++.so.6.0.25
stings usr/lib64/libstdc++.so.6.0.25 |grep GLIBCXX //check support
cp usr/lib64/libstdc++.so.6.0.25 /usr/lib64/
cd /usr/lib64
rm -rf libstdc++.so.6
ln -sv libstdc++.so.6.0.25 libstdc++.so.6