linux Centos7升级gcc 源码编译安装
CentOS 7 默认 gcc 版本是 " gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) " , 且用yum 安装也是 4.X 版本的,
所以,需要下载需要版本,手动编译安装。
0. 编译、安装需要登陆 root 用户执行。
1. 下载:
https://mirrors.aliyun.com/gnu/gcc/gcc-5.5.0/
其他下载源,参考这篇文章:https://www.cnblogs.com/wutou/p/16777314.html
2. 解压:
# tar -zxf gcc-5.5.0.tar.gz
3. 下载依赖
# cd gcc-5.5.0 # ./contrib/download_prerequisites
下载到的依赖包:
gmp-4.3.2.tar.bz2 isl-0.14.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2
注:依赖包不用解压,编译时会自动解压
4. 配置
# ./configure --prefix=/usr/local/gcc-5.5.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
--prefix=/usr/local/gcc-5.5.0/
:把所有资源文件都放在该路径下。
--enable-checking=release
:生成的编译器在编译过程中不做额外检查。
--enable-languages=c,c++
:让gcc支持c,c++。
--disable-multilib
:不生成编译为其他平台可执行代码的交叉编译器。
5. 编译
## 单线程 make ## 多线程,j3 代表使用3个线程, ## 在任务管理器中查看CPU支持几个线程,然后减一,比如CPU支持4线程,那么就用3个线程编译,为机器留一个线程处理其他任务 make -j3
注: 多线程编译报错,可使用单线程编;
文末有编译时间参考
6. 安装
# make install
7. 设置默认版本
## 给旧版本改名,如果以后想使用旧版本,就不能用gcc打开4.8.5版本了,要用gcc485 mv /usr/bin/gcc /usr/bin/gcc485 mv /usr/bin/g++ /usr/bin/g++485 mv /usr/bin/c++ /usr/bin/c++485 mv /usr/bin/cc /usr/bin/cc485 mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak ## 将新版本用软连接,指向默认名字 ln -s /usr/local/gcc-5.5.0/bin/gcc /usr/bin/gcc ln -s /usr/local/gcc-5.5.0/bin/g++ /usr/bin/g++ ln -s /usr/local/gcc-5.5.0/bin/c++ /usr/bin/c++ ln -s /usr/local/gcc-5.5.0/bin/gcc /usr/bin/cc ln -s /usr/local/gcc-5.5.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
8. 验证
# gcc --version 或 # gcc -v
错误收集:
问题一:configure: error: error verifying int64_t uses long long [ 参考1 ]
答一:可能是没有装 g++ 导致的(也可能是装了g++ 没有配置环境变量,系统找不到),
可以用 " g++ -v " 或 “ whereis g++ ”,看是否有版本输出,如果
安装 g++ : https://www.cnblogs.com/yg-Mark/p/12915410.html
编译平台:
笔记本电脑配置: 型号:TinkPad E470 CPU:Intel® Core™ i5-7200U CPU @ 2.50GHz × 4 GPU:Intel® HD Graphics 620 (Kaby Lake GT2) 内存: 16G 鲁大师:(V5和V6版本不同,记分算法不同,不可互相参考) V5.2跑分: 112731 V6.1跑分: 389519
编译时间参考:
单线程编译时间: real 68m16.670s user 59m58.979s sys 8m10.139s 多线程, -j3 三个线程编译时间: real 35m52.863s user 82m19.093s sys 10m14.032s
为什么是GCC7.5?
CentOS7 自带的 gcc/g++ 版本是 4.8,如果没有安装,可以通过 yum 命令安装。
由于 gcc/g++ 4.8 完全支持 C++ 11,支持部分 C++ 14,不支持 C++ 17,而完全支持 C++ 17 的是 g++ 7 及以上版本:
个人不太建议安装GCC8.X,太新的编译器,所需要的依赖包、各种环境都需要最新版本,安装过程中会出现很多问题。而且还不一定那么稳定。
本着够用就好的原则,GCC7.5完全支持C++17,是最理想的选择。
参考:
https://blog.csdn.net/wai_58934/article/details/125816853
https://blog.csdn.net/weixin_41645135/article/details/121573475
https://www.cnblogs.com/yu121/p/12853419.html
https://blog.csdn.net/weixin_45661908/article/details/123928463