strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
经过查看确实没有。
这种情况有两种解决办法:一是更新gcc动态库文件libstdc++.so.6,二是升级gcc。
方法一:更新libstdc++.so.6
于是去下载。下载地址:http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb
下载到/usr/local/src中。然后解压 ar -x libstdc++6_4.7.2-5_amd64.deb && tar xvf data.tar.gz
解压后会出现usr目录
cd usr/lib/x86_64-linux-gnu/
cp libstdc++.so.6.0.17 /usr/lib64
cd /usr/lib64
rm libstdc++.so.6
ln libstdc++.so.6.0.17 libstdc++.so.6
至此,已升级完成。可以再次查看是否有GLIBCXX_3.4.15了。
方法二:升级gcc
1.下载源码包
wget http: //ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2
tar -jxvf gcc-4.8.0.tar.bz2
2.下载编译所需依赖库
cd gcc-4.8.0
./contrib/download_prerequisites
cd ..
3.建立编译输出目录
mkdir gcc-build-4.8.0
4.进入此目录,执行以下命令,生成makefile文件
cd gcc-build-4.8.0
../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
5.编译
# j 后面的是核心数,编译速度会比较快
make -j4
6.安装
make install
7.切换GCC到新版 确定新安装的GCC的路径,一般默认在/usr/local/bin下。可以先updatedb,然后locate gcc-4.8|tail找一下
ls /usr/local/bin | grep gcc
添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/i686-pc-linux-gnu-gcc 40
8.确认当前版本已经切换为新版(重新连接shell生效).
gcc -v
如果此时还是没有GLIBCXX_3.4.15。这是因为虽然升级了GCC,生成的动态库没有替换老版本gcc的动态库。
解决方法:
cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64/ rm -f libstdc++.so.6 ln -s libstdc++.so.6.0.18 libstdc++.so.6
原文地址:http://blog.51cto.com/jack88/2105457