解决version 'GLIBC_2.18' 'GLIBCXX_3.4.14' not found

写在前面

升级底层库是高危操作,请谨慎操作,有条件的话建议先创建一个快照,虚拟机、云服务器创建快照还是很方便的。如无特殊情况,建议直接升级GCC,即方法二

解决version 'GLIBC_2.18' not found

看看有没有GLIBC_2.18strings /lib64/libc.so.6 |grep GLIBC_

没有请继续

wget -c http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz
tar -zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure
make && make install
解决version 'GLIBCXX_3.4.14' not found

看看有没有GLIBCXX_3.4.14 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

没有请继续

方法一:更新libstdc++.so.6
wget -c http://ftp.de.debian.org/debian/pool/main/g/gcc-4.8/libstdc++6-4.8-dbg_4.8.4-1_amd64.deb
ar -x libstdc++6-4.8-dbg_4.8.4-1_amd64.deb
tar -xvf data.tar.xz
cp usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.19 /usr/lib64/
cd /usr/lib64/
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.19  libstdc++.so.6
方法二:升级gcc
http://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz
tar -zxvf gcc-6.3.0.tar.gz
cd gcc-6.3.0
./contrib/download_prerequisites
cd .. && mkdir gcc-build && cd gcc-build
../gcc-6.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make
make install

至此gcc-6.3已安装完成,如果gcc -v不是最新版,请继续

添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了

update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc 40 

确认当前版本已经切换为新版(重新连接shell生效).

gcc -v

如果此时还是没有GLIBCXX_3.4.15。这是因为虽然升级了GCC,生成的动态库没有替换老版本gcc的动态库。

解决方法:
cp /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64/
cd /usr/lib64
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s libstdc++.so.6.0.22 libstdc++.so.6

评论

评论正在提交中...请稍后
评论提交成功...