在执行世界杯的二进制代码和安装keepaway中会遇到GLIBCXX3.4.21 not find的问题,其解决办法就是升级安装GCC。
一、首先查看当前gcc版本
$ strings /usr/lib/x86_64_linux-gun/libstdc++.so.6|grep GLIBCXX
二、升级安装GCC
1. 下载最新版本gcc
gcc当前最新版本是5.2,下面是我找到的两个下载镜像,下载速度还可以,都可以使用:
wget http://gcc.parentingamerica.com/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
// 或
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
上面两个镜像分别位于加拿大和日本,由于gcc本身比较大(100MB左右),所以下载会需要一些时间。
wget http://gcc.parentingamerica.com/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
// 或
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
上面两个镜像分别位于加拿大和日本,由于gcc本身比较大(100MB左右),所以下载会需要一些时间。
2. 解压下载文件
gcc安装文件下载完成后,执行以下命令解压文件:
tar -xf gcc-5.2.0.tar.bz2
3. 下载gcc依赖文件和库
解压完成后,执行以下命令进入工作目录:
cd gcc-5.2.0
执行download_prerequisites脚本,下载gcc依赖文件和库:
./contrib/download_prerequisites
download_prerequisites脚本,会下载安装gcc所需的mpfr、gmp和mpc文件。
4. 配置安装gcc
建立一个输出目录,编译时所有生成的中间文件都放到该目录下:
mkdir gcc-temp
工作目录切换至输出目录,并在其中执行配置和安装:
cd gcc-temp
执行configure配置安装文件:
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
配置完成后,执行以下命令,编译gcc:
make
注意:编译gcc时间较长,我用了近三个小才编译完成。
编译完成后,安装gcc:
make install
安装完成后还需要替换系统默认的gcc,执行以下命令,查找5.2版本的安装文件:
ls /usr/local/bin | grep gcc
tar -xf gcc-5.2.0.tar.bz2
3. 下载gcc依赖文件和库
解压完成后,执行以下命令进入工作目录:
cd gcc-5.2.0
执行download_prerequisites脚本,下载gcc依赖文件和库:
./contrib/download_prerequisites
download_prerequisites脚本,会下载安装gcc所需的mpfr、gmp和mpc文件。
4. 配置安装gcc
建立一个输出目录,编译时所有生成的中间文件都放到该目录下:
mkdir gcc-temp
工作目录切换至输出目录,并在其中执行配置和安装:
cd gcc-temp
执行configure配置安装文件:
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
配置完成后,执行以下命令,编译gcc:
make
注意:编译gcc时间较长,我用了近三个小才编译完成。
编译完成后,安装gcc:
make install
安装完成后还需要替换系统默认的gcc,执行以下命令,查找5.2版本的安装文件:
ls /usr/local/bin | grep gcc
执行升级命令:
/usr/sbin/update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 52
5. 验证安装
执行以下命令查看gcc版本:
gcc -v
执行以下命令查看g++版本:
g++ -v
或使用which gcc查看gcc安装目录,在安装目录下执行-v命令。例如,安装目录为/usr/local/bin/gcc:
/usr/local/bin/gcc -v
如果输出中有类似以下行,说明安装成功:
gcc 版本 5.2.0 (GCC)
三、更换软链接地址
1.顺着gcc的安装路径,找到新的libstdc++地址
$ strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX
2. 复制链接
cp /usr/local/lib64/libstdc++.so.6.0.21 /usr/lib/x86_64_linux-gun
cd /usr/lib/x86_64_linux-gun
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6
$ ll libstdc*
四、检查
$ strings /usr/lib/x86_64_linux-gun/libstdc++.so.6|grep GLIBCXX