HCRM博客

在CentOS系统上搭建GCC编译环境以编译C程序

当你兴致勃勃地在CentOS服务器上写好了第一个C程序,满心期待地输入 gcc hello.c -o hello,却赫然看到 command not found: gcc 的提示时,那份挫败感想必很深刻,别急,这只是缺少了关键的构建工具——GNU编译器集合(GCC),作为Linux系统上C/C++程序开发的基石,GCC几乎是不可或缺的,本文将清晰、直接地指导你完成在CentOS系统上安装GCC C编译器的过程,助你快速搭建起开发环境。

为什么必须安装GCC?

在CentOS系统上搭建GCC编译环境以编译C程序-图1

GCC是将人类可读的C、C++等源代码转换成机器可执行代码的核心工具,无论是编译一个简单的测试程序,还是构建复杂的应用程序乃至内核模块,GCC都扮演着核心角色,没有它,源代码就只是一堆文本文件,对于开发者、系统管理员或需要从源码安装软件的用户而言,GCC是必备工具。

确认当前状态:你的系统有GCC吗?

在着手安装之前,明智的做法是先检查系统是否已经安装了GCC,以及安装了哪个版本,打开终端,输入以下命令:

gcc --version

或者更详细一些:

gcc -v
  • 如果系统返回了类似 gcc (GCC) x.x.x ... 的版本信息(gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16)),恭喜你,GCC已经存在,可以直接使用了。
  • 如果看到 bash: gcc: command not found 或类似的错误信息,那么就需要进行安装。

使用Yum/DNF包管理器安装(推荐,最简单快捷)

CentOS(以及其后续项目如AlmaLinux, Rocky Linux)强大的Yum(在CentOS 8+中是DNF)包管理器是安装软件的首选方式,它能自动处理依赖关系,确保安装过程顺畅。

在CentOS系统上搭建GCC编译环境以编译C程序-图2
  1. 更新软件包索引(强烈建议): 在安装任何新软件前,更新本地软件仓库的元数据是个好习惯,这能确保你获取到最新的可用版本和安全更新。

    sudo yum update   # CentOS 7 及更早版本
    sudo dnf update   # CentOS 8 及更高版本(包括AlmaLinux, Rocky Linux)

    输入你的管理员密码确认操作。

  2. 安装GCC及相关开发工具链: 安装名为 gcc 的包就包含了C编译器,但为了获得完整的开发环境(包括 make, glibc-devel 等构建常用开源软件所需的工具),安装 Development Tools 软件包组是更全面的选择:

    sudo yum groupinstall "Development Tools"   # CentOS 7
    sudo dnf groupinstall "Development Tools"  # CentOS 8+

    这个命令会安装GCC(C和C++编译器)、GDB(调试器)、Make、Autoconf、Automake 以及其他许多开发必备工具。

  3. 仅安装GCC C编译器(最小化安装): 如果你非常确定只需要GCC来编译C程序,不需要其他开发工具,可以只安装 gcc 包:

    sudo yum install gcc   # CentOS 7
    sudo dnf install gcc   # CentOS 8+
  4. 验证安装: 安装完成后,再次运行验证命令:

    在CentOS系统上搭建GCC编译环境以编译C程序-图3
    gcc --version

    如果成功显示版本信息(gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) 对于CentOS 7,或更高版本),说明安装成功。

从源码编译安装(高级,特定版本需求)

大多数情况下,方法一完全够用,但如果你需要CentOS官方仓库中不提供的特定GCC版本(比如最新稳定版或某个旧版本),或者需要高度定制化编译选项,就需要从源码编译安装,这个过程更复杂、耗时更长,且需要仔细管理版本和依赖。

  1. 安装编译GCC本身所需的依赖: 即使是编译GCC,也需要一个可用的编译器(通常称为“Bootstrap编译器”)和一些基础库(如GMP, MPFR, MPC),先安装这些必要工具和库:

    # CentOS 7:
    sudo yum groupinstall "Development Tools"
    sudo yum install wget gmp-devel mpfr-devel libmpc-devel
    # CentOS 8+:
    sudo dnf groupinstall "Development Tools"
    sudo dnf install wget gmp-devel mpfr-devel libmpc-devel
  2. 下载GCC源码: 访问 GNU镜像列表 或直接到 GCC官方FTP 找到你需要的版本(gcc-11.3.0),使用 wget 下载:

    wget https://ftp.gnu.org/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz
  3. 解压源码包:

    tar xzf gcc-11.3.0.tar.gz
    cd gcc-11.3.0
  4. 下载依赖项(可选但推荐): GCC源码树提供了一个脚本自动下载它需要的GMP、MPFR、MPC库(这些库的源码包包含在GCC源码中,但需要单独解压配置),运行:

    ./contrib/download_prerequisites
  5. 配置编译选项: 创建一个单独的构建目录(避免污染源码目录),并运行 configure 脚本,这里配置一个基本安装到 /usr/local/gcc-11.3.0

    mkdir build
    cd build
    ../configure --prefix=/usr/local/gcc-11.3.0 --enable-languages=c,c++ --disable-multilib
    • --prefix=/usr/local/gcc-11.3.0: 指定安装目录。
    • --enable-languages=c,c++: 指定编译支持的编程语言(这里C和C++)。
    • --disable-multilib: 禁用生成多目标库(32/64位),简化编译(如果确定不需要32位支持)。
  6. 编译: 使用 make 开始编译,这个过程非常漫长(几十分钟到数小时,取决于机器性能),可以使用 -j 选项指定并行编译任务数以加快速度(make -j4 表示使用4个核)。

    make -j$(nproc)  # nproc 获取CPU核心数,自动并行编译
  7. 安装: 编译成功后(没有报错),进行安装:

    sudo make install
  8. 配置环境变量: 安装到非标准路径后,需要手动将该路径添加到系统的 PATH 和库路径 LD_LIBRARY_PATH 中,以便系统能找到新安装的GCC,修改 ~/.bashrc (针对当前用户) 或 /etc/profile.d/gcc.sh (针对所有用户):

    export PATH=/usr/local/gcc-11.3.0/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/gcc-11.3.0/lib64:$LD_LIBRARY_PATH

    保存后执行 source ~/.bashrc 或重新登录终端使配置生效。

  9. 验证: 检查新安装GCC的版本:

    gcc --version

    确认输出的是你安装的版本(如 gcc (GCC) 11.3.0)。

使用软件集合(SCL)安装较新版本(CentOS 7特别推荐)

CentOS 7默认仓库中的GCC版本(4.8.5)相对较旧,如果你需要在CentOS 7上使用更新的GCC版本(如GCC 8, 9, 10, 11),但又不想自己编译,软件集合(Software Collections, SCL) 是最佳选择,SCL允许你在系统上并行安装和使用多个软件版本而不影响默认版本。

  1. 安装SCL仓库:

    sudo yum install centos-release-scl
  2. 安装所需的GCC软件集合包: SCL仓库提供了多个GCC版本集合包,通常命名为 devtoolset-N (N是主版本号),例如安装GCC 11:

    sudo yum install devtoolset-11

    其他常见版本如 devtoolset-8, devtoolset-9, devtoolset-10 等。

  3. 启用软件集合: SCL安装的软件不会自动覆盖系统默认路径,你需要显式启用它:

    • 临时启用(仅当前终端会话有效):
      scl enable devtoolset-11 bash
    • 永久启用(针对当前用户):~/.bashrc 文件末尾添加:
      source /opt/rh/devtoolset-11/enable

      保存后执行 source ~/.bashrc 或重新登录。

  4. 验证: 启用后,运行 gcc --version 应显示新版本(如 gcc (GCC) 11.2.1...)。

选择哪种方法?

  • 追求简单、快速、稳定,使用默认版本即可: 首选方法一(Yum/DNF安装)
  • 在CentOS 7上需要较新的GCC版本(如8+): 强烈推荐方法三(SCL软件集合),这是官方支持且管理方便的途径。
  • 需要非常特定的版本或深度定制: 考虑方法二(源码编译),请务必评估其复杂性和维护成本。

安装后的小测试:编译你的第一个程序

验证安装是否真正有效的最好方式就是编译运行一个简单的C程序,创建一个名为 hello.c 的文件:

#include <stdio.h>
int main() {
    printf("Hello, CentOS! GCC is working perfectly.\n");
    return 0;
}

使用GCC编译它:

gcc hello.c -o hello

如果没有错误,运行生成的可执行文件:

./hello

如果屏幕上打印出 Hello, CentOS! GCC is working perfectly.,那么恭喜你,你的CentOS GCC开发环境已经成功搭建完成!一个可靠、配置正确的编译环境是进行任何C语言开发、系统管理任务或软件部署工作的起点,花些时间确保它正确安装,将为你后续的工作省去大量潜在的麻烦,你可以自信地探索更广阔的开源世界或开始构建自己的项目了。


本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/35968.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~