Centos 7 升级gcc
手动编译升级
- 获取安装包并解压
地址是:
http://ftp.gnu.org/gnu/gcc/
https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.2.0/(国内)
解压缩
tar -jxvf gcc-7.2.0.tar.bz2
或则
tar -zxvf gcc-7.2.0.tar.gz
这两个版本选择下载时的版本进行不同的解压操作
2.下载供编译需求的依赖项
cd gcc-7.2.0
./contrib/download_prerequisites
如果不成功可以手动下载依赖
yum install gmp-devel // 編譯依賴此庫
yum install mpfr-devel // 編譯依賴此庫
yum install libmpc-devel // 編譯依賴此庫
当然以上库可以在ftp://gcc.gnu.org/pub/gcc/infrastructure/下载
下载isl-0.18.tar.bz2 // yum 没有这个库源码安装
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
tar -jxvf isl-0.18.tar.bz2
cd isl-0.18
./configure
make
make install
- 建立一个目录供编译出的文件存放
mkdir gcc-build-7.2.0
cd gcc-build-7.2.0
4.编译安装
yum groupinstall "Development Tools"
yum install glibc-static libstdc++-static(这两个是必要的开发环境)
../configure --prefix=/usr/local/gcc7 --enable-languages=c,c++,go --disable-multilib // 指定gcc7安裝地址,指定所需安裝語言,不支持32位
make -j4 (-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。建议不要使用make -j来编译,虽然可以缩短编译时间,但极大可能会编译失败)
make install((安装需要root权限!))
- 重启,然后查看gcc版本
gcc -v
6.升级gcc,生成的动态库没有替换老版本gcc的动态库
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found
的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
6.1 运行以下命令检查动态库:strings /usr/lib64/libstdc++.so.6 | grep GLIBC
从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。
6.2 执行以下命令,查找编译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 ./
6.3 删除原来软连接:rm -rf libstdc++.so.6
6.4 将默认库的软连接指向最新动态库:ln -s libstdc++.so.6.0.22 libstdc++.so.6
6.5 默认动态库升级完成。重新运行以下命令检查动态库:strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 输出有"GLIBCXX_3.4.21"
了
原文链接:
CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
Centos7升级gcc学习笔记
利用yum 升级(目前能升级到7.3)
yum install centos-release-scl -y
yum install devtoolset-7 -y
scl enable devtoolset-7 bash
gcc --version
注释:
在centos的devtoolset库中 最新的为 devtoolset-7,所以我们以后可以自己改数字安装最新的版本
scl enable devtoolset-7 bash 如果使用的是zsh则使用
scl enable devtoolset-7 zsh
如果不知道什么是zsh那么默认的就好了
附上:centos 镜像地址
上一篇: CentOS7.8安装mysql5.7(rpm安装)
下一篇: sealed在C#中的作用说明