centos问题3:ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
背景
centos7.9
原因
由于 libstdc++.so.6的版本过低,没有DLIBCXX_3.4.20
使用如下命令,发现没有GLIBCXX_3.4.20
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
解决方案 - libstdc++.so.6.0.19 升级到libstdc++.so.6.0.24
libstdc++的代码是在gcc的代码中,需要下载gcc代码,对其进行编译安装,设置软连接
1.下载gcc源码并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
tar -xvf gcc-7.3.0.tar.gz
2.编译gcc/libstdc++
cd gcc-7.3.0
#下载gcc依赖
./contrib/download_prerequisites
3.执行编译、安装
# 配置生成makefile
mkdir build
cd build
../configure --prefix=/usr/local/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 编译的过程比较久,大概编译了三个多小时,建议把:make && make install分开执行,通过多进程执行
make -j8
make install
4.配置
# 安装完后,编译出来的libstdc++.so.6.0.24 安装到 /usr/local/lib64/下面
# 可以 find / -name libstdc++.so*查找
# 把安装后的libstdc++.so.6.0.24 拷贝到/usr/lib64
cp /root/gcc-7.3.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64/
cd /usr/lib64/
# 创建软连接
rm libstdc++.so.6
ln -sf libstdc++.so.6.0.24 libstdc++.so.6
# 查看是否链接成功
ll libstdc++.so.6*
5.确认
strings libstdc++.so.6 |grep GLIBC