GCC安装更新

GCC安装

安装 GCC 之前,首先我们需要下载,下载命令如下:

wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2

下载完之后,我们使用如下命令进行解压:

tar -jxvf gcc-6.1.0.tar.bz2

接着,我们开始下载依赖项:

cd gcc-6.1.0 ./contrib/download_prerequisites

我们再次建立一个目录供编译出的文件存放:

mkdir gcc-build-6.1.0 cd gcc-build-6.1.0

我们使用如下命令生成 Makefile 文件:

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

现在,我们开始编译安装,执行如下命令:

make -j4 && make install 

现在,我们重启,然后查看 gcc 版本,具体命令如下:

gcc -v

GCC升级

升级 gcc,生成的动态库没有替换老版本 gcc 的动态库,源码编译升级安装了 gcc 后,编译程序或运行其它程序时,有时会出现类似

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

的问题。这是因为升级 gcc 时,生成的动态库没有替换老版本 gcc 的动态库导致的,将 gcc 最新版本的动态库替换系统中老版本的动态库即可解决。

运行以下命令检查动态库:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

从输出可以看出,gcc 的动态库还是旧版本的。说明出现这些问题,是因为升级 gcc 时,生成的动态库没有替换老版本 gcc 的动态库。

执行以下命令,查找编译 gcc 时生成的最新动态库:

find / -name "libstdc++.so*"

将上面的最新动态库 libstdc++.so.6.0.22 复制到 /usr/lib64 目录下:

cd /usr/lib64 cp /root/Downloads/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./

删除原来软连接:

rm -rf libstdc++.so.6

将默认库的软连接指向最新动态库:

ln -s libstdc++.so.6.0.22 libstdc++.so.6

最后,默认动态库升级完成。重新运行以下命令检查动态库:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

可以看到,输出有 “GLIBCXX_3.4.21” 了。