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:不生成编译为其他平台可执行代码的交叉编译器。

https://www.bbsmax.com/A/qVdeW2QbJP/

 

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 

 

posted @ 2022-10-10 21:32  悟透  阅读(778)  评论(0编辑  收藏  举报