写在前面
升级底层库是高危操作,请谨慎操作,有条件的话建议先创建一个快照,虚拟机、云服务器创建快照还是很方便的。如无特殊情况,建议直接升级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
您可以选择一种方式赞助本站
支付宝扫一扫
微信扫一扫