Centos 8安装gcc的方法

GCC介绍

GCC是GNU编译器套件,是由GNU开发的编程语言的编译器。GNU编译器套件包括C、C++、Objective-C、Fortran、Java、Ada和Go语言及这些语言的库,使用gcc编译程序时,编译过程可以为4个阶段:预处理(Pre-Processing)、编译(Compiling)、汇编(Assembling)、链接(Linking)

由于 Linux 操作系统的自由开源,在其基础上衍生出了很多不同的Linux操作系统,如CentOS、Ubuntu、Debian等,这些Linux发行版中,大多数都默认装有GCC编译器,但是在CentOS8中并没有安装,这就需要自己来安装了

下面介绍在线安装、离线安装及版本升级方法,安装系统是CentOS 8.3,其它版本可能略有不同

在线安装

在线安装是一种极其简单的“傻瓜式”安装方法,但是其默认根据当前系统版本所对应的gcc进行安装,而非选择最新版gcc进行安装

  1. 确认当前系统是否已安装gcc,执行以下命令

    rpm -q gcc
    #或者输入查看gcc版本的命令
    gcc -v
    
  2. 使用命令安装

    dnf install gcc gcc-c++ -y
    
  3. 等待安装结束后再次输入查看gcc版本的命令,出现gcc版本信息就说明安装成功啦

    rpm -q gcc
    #输入查看gcc版本的命令
    gcc --verson
    gcc -v
    g++ -v
    

版本升级

将gcc-8.3升级到gcc10.2,若未安装gcc,不能使用该方法直接安装gcc,没有旧版本的gcc,编译时会失败的,会报错configure: error: no acceptable C compiler found in $PATH

  1. 下载gcc-10.2的安装包,若下载失败可以通过国内镜像站下载,在华为、阿里、清华等镜像站搜索GNU,选择需要的版本

    wget https://gcc.gnu.org/pub/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.gz
    
  2. 解压并进入目录

    tar -zxf gcc-10.2.0.tar.gz
    cd gcc-10.2.0
    
  3. 执行以下命令,下载安装gcc的依赖包,由于网络原因,下载时间可能会有点久,请耐心等待

    ./contrib/download_prerequisites
    
  4. 由于gcc编译器支持多种语言的编译,而实际情况中可能只需要编译 1~2 种编程语言,因此需要对其进行必要的配置。通过执行如下指令,可以配置gcc支持编译C、C++

    ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
    
  5. 使用make命令来编译gcc源程序,若提示命令不存在,先安装make,执行命令dnf install make -y,编译时间会很长,本次安装耗时近2小时,建议选择合适的时间进行编译

    make
    
  6. 编译完成后安装gcc

    make install
    
  7. 安装完成后重启服务器,然后查看gcc版本

    # 查看gcc版本是否变更
    gcc --version
    gcc -v
    g++ -v
    

    重启服务器后可以发现gcc成功从8.3.1升级到10.2.0,若服务器未重启版本不会变更,查看还是返回旧版本信息

离线安装

在工作中,有时会在内网进行工作,无法连接外网,不得不采取离线安装方式,本次离线安装也是采用根据系统版本选择对应的gcc进行安装

  1. 首先查看系统相关版本信息

    # 查看系统版本信息
    cat /etc/centos-release
    # 查看Linux版本信息
    cat /proc/version
    # 此命令输出结果包含了系统内核版本、gcc编译器版本和Red Hat版本号
    
  2. 根据上步获得的信息,使用可访问外网的电脑下载相关gcc的rpm包,下载地址:点击此处进入

  3. 进入详情页,页面显示相关描述信息、下载地址、所需依赖等,依赖如下,并非所有依赖都要安装,可以参考别人版本安装的rpm,改下版本信息后进行下载,但是此方式并能保证修改是正确的!另外若不知道安装GCC到底需要哪些依赖的rpm,就直接下个gcc-c++的rpm,看提示需要哪些依赖关系包,然后再下载相关依赖

  4. 下载gcc-c++的rpm包,在详情页,访问下载地址即可

  5. 将下载的rpm包上传到服务器上,进行安装

    # 新建目录,将rpm包统一放到此目录下
    mkdir gcc
    cd gcc
    # 安装rpm包
    rpm -ivh gcc-c++-8.3.1-5.1.el8.x86_64.rpm
    
  6. 根据上一步获得依赖提示,回到网站中进入gcc-c++-8.3.1-5.1.el8.x86_64.rpm详情页,下载依赖后上传到服务器安装

    # 逐条安装
    rpm -ivh libmpc-1.0.2-9.el8.x86_64.rpm
    rpm -ivh libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
    rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm
    # 或者直接合并为一条命令
    rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm libmpc-1.0.2-9.el8.x86_64.rpm libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
    
  7. 同样根据依赖提示,再次回到网站中进入gcc-8.3.1-5.1.el8.x86_64.rpm详情页,下载依赖后上传服务器安装,注意进入相应的rpm包页面下载依赖,否则依赖找不到

    # 逐条安装
    rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm
    rpm -ivh isl-0.16.1-6.el8.x86_64.rpm
    rpm -ivh glibc-devel-2.28-127.el8.x86_64.rpm
    # 或者合并为一条命令
    rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm
    
  8. 同样根据依赖提示,回到网站中进入glibc-devel-2.28-127.el8.x86_64.rpm详情页,下载依赖后上传服务器安装

    # 逐条安装
    rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm
    rpm -ivh rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
    # 或者合并为一条命令
    rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
    
  9. 还是根据依赖提示,回到网站中进入glibc-headers-2.28-127.el8.x86_64.rpm详情页,下载依赖后上传服务器安装

    # 安装glibc-headers依赖
    rpm -ivh kernel-headers-4.18.0-240.15.1.el8_3.x86_64.rpm
    # 安装glibc-headers
    rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm
    # 安装libxcrypt-devel
    rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
    
  10. 这里出现了个小状况狂,安装的两个rpm包相互依赖,只能将一方跳过依赖并强行安装了

    # 强行安装libxcrypt-devel
    rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm --nodeps --force
    # 安装cpp、isl、glibc-devel
    rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm
    
  11. 总算将所有依赖安装完成,最后再安装gcc和gcc-c++

    # 安装gcc
    rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm
    # 安装gcc-c++
    rpm -ivh gcc-c++-8.3.1-5.1.el8.x86_64.rpm
    
  12. 验证是否安装成功

    #查看gcc版本
    gcc --verson
    #或者
    gcc -v
    g++ -v
    

    通过验证gcc安装成功

    想要自己解决所需的依赖关系,想到了这种有点繁琐的方式,知道这些所需的依赖关系后按反向顺序安装或者将所有的rpm包都强制安装就能很快完成啦!

    本次安装用到了以下10个rpm包

    kernel-headers-4.18.0-240.15.1.el8_3.x86_64.rpm
    glibc-headers-2.28-127.el8.x86_64.rpm
    libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
    glibc-devel-2.28-127.el8.x86_64.rpm
    isl-0.16.1-6.el8.x86_64.rpm
    cpp-8.3.1-5.1.el8.x86_64.rpm
    libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
    libmpc-1.0.2-9.el8.x86_64.rpm
    gcc-8.3.1-5.1.el8.x86_64.rpm
    gcc-c++-8.3.1-5.1.el8.x86_64
    

    当知道并获得所需的依赖包时,两步即可安装完成

    # 1.上传rpm包
    # 2.忽略依赖强制安装所有rpm包
    rpm -ivh *.rpm --nodeps --force
    

    其实还有一种方式获取gcc依赖,使用在线安装时已经有显示需要哪些rpm包,然后找到这些rpm包下载后就可以安装啦

    在网上找个相关资源很多都是需要积分付费的,自己通过这种方式也安装成功了,免费提供下gcc-8.3.1及依赖包,下载地址:点击此处,密码:gx09

posted @ 2021-03-31 22:14  小白典  阅读(9705)  评论(0编辑  收藏  举报