在 CentOS 系统中安装 GCC(GNU Compiler Collection)是进行软件开发、编译软件包或运行某些依赖编译环境的脚本所必需的步骤,GCC 是一个功能强大的编译器套件,支持 C、C++、Objective-C、Fortran、Ada、Go 和 D 等多种编程语言,根据 CentOS 的不同版本以及用户对 GCC 版本的具体需求,有多种安装方法可供选择,本文将详细介绍在 CentOS 系统上下载和安装 GCC 的几种主流方式,并提供清晰的指导和注意事项。

使用 YUM/DNF 安装开发工具组(推荐)
对于绝大多数用户而言,这是最简单、最快捷且最推荐的方法,CentOS 官方仓库提供了一个名为“Development Tools”的软件包组,它包含了GCC编译器本身以及一系列其他开发所必需的工具,如 make、gdb、binutils 等。
对于 CentOS 7
CentOS 7 默认使用 yum 作为其包管理器,打开终端,执行以下命令即可安装完整的开发工具组:
sudo yum groupinstall "Development Tools"
系统会列出所有将要安装的软件包,输入 y 并回车确认。yum 会自动处理所有依赖关系并完成安装,这个过程可能需要几分钟时间,具体取决于您的网络速度。
对于 CentOS 8 / CentOS Stream 9
从 CentOS 8 开始,dnf 取代了 yum 成为默认的包管理器(尽管在许多系统中 yum 仍然是 dnf 的一个符号链接),安装命令与 CentOS 7 非常相似:
sudo dnf groupinstall "Development Tools"
同样,确认安装列表并等待完成。
验证安装
安装完成后,您可以通过以下命令来检查 GCC 是否已成功安装及其版本信息:
gcc --version
如果终端输出了 GCC 的版本号、版权信息等,则说明安装已成功,在 CentOS 7 上,默认版本可能是 GCC 4.8.5。
安装特定或更新版本的 GCC
有时,系统默认仓库中的 GCC 版本可能过于陈旧,无法满足新项目对 C++17、C++20 等新标准特性的需求,在这种情况下,我们需要从特定的仓库中安装更新的 GCC 版本。
在 CentOS 7 中使用 Developer Toolset
CentOS 7 通过 Software Collections (SCL) 提供了更新的工具链,称为 Developer Toolset,这允许您在不影响系统默认 GCC 版本的情况下,安装并使用更新的 GCC。

安装 SCL 仓库发布文件:
sudo yum install centos-release-scl
您可以安装特定版本的 Developer Toolset,不同版本对应不同的 GCC 版本,如下表所示:
| Developer Toolset 版本 | GCC 版本 | 安装命令示例 |
|---|---|---|
| devtoolset-7 | 3.1 | sudo yum install devtoolset-7 |
| devtoolset-8 | 3.1 | sudo yum install devtoolset-8 |
| devtoolset-9 | 3.1 | sudo yum install devtoolset-9 |
要安装 GCC 9,可以执行:
sudo yum install devtoolset-9
安装后,新版本的 GCC 不会立即成为系统默认,您需要通过 scl 命令来启用它,这个命令会在一个新的 shell 会话中临时设置环境变量。
scl enable devtoolset-9 bash
执行此命令后,您就进入了一个新的 bash shell,gcc --version 将会显示 9.3.1 版本,当您退出此 shell 时,系统将恢复到默认的 GCC 版本。
在 CentOS 8/9 中使用 PowerTools/CRB 仓库
在 CentOS 8 及更高版本中,更新的 GCC 版本通常位于 PowerTools(CentOS 8)或 CodeReady Builder (CRB, CentOS Stream 9) 仓库中。
启用该仓库,对于 CentOS 8:
sudo dnf config-manager --set-enabled powertools
对于 CentOS Stream 9:
sudo dnf config-manager --set-enabled crb
启用仓库后,您可以使用 dnf 搜索并安装 gcc-toolset,安装 GCC 12:

sudo dnf install gcc-toolset-12-gcc
与方法类似,安装后需要手动启用:
scl enable gcc-toolset-12 bash
从源代码编译安装(高级)
如果上述方法都无法满足您的极端需求(例如需要安装最新的预发布版或打上特定补丁的版本),您可以选择从源代码编译安装,这是一个耗时且复杂的过程,仅推荐给有经验的开发者。
主要步骤如下:
- 安装编译依赖:您需要先有一个基础的编译器和相关库来编译新版本的 GCC。
sudo yum groupinstall "Development Tools" sudo yum install gmp-devel mpfr-devel libmpc-devel zlib-devel
- 下载源码:从 GCC 官方网站(https://gcc.gnu.org/mirrors.html)下载您需要的版本源代码包(
gcc-13.2.0.tar.gz)并解压。 - 配置编译选项:进入解压后的目录,创建一个构建目录并运行
configure脚本。tar -xf gcc-13.2.0.tar.gz cd gcc-13.2.0 mkdir build && cd build ../configure --prefix=/usr/local/gcc-13 --enable-languages=c,c++ --disable-multilib
--prefix指定了安装路径,避免覆盖系统文件。 - 编译与安装:这个过程非常耗时,可能需要一小时或更久。
make -j$(nproc) # 使用所有CPU核心进行编译 sudo make install
- 配置环境:将新安装的 GCC 路径添加到
PATH环境变量中。
相关问答 (FAQs)
我已经通过 devtoolset 安装了新版本的 GCC,为什么输入 gcc --version 后显示的仍然是系统旧版本?
回答: 这是因为通过 yum install devtoolset-X 或 scl enable devtoolset-X bash 安装和启用的 GCC 是在一个隔离的软件包集合环境中运行的。scl enable 命令只会为当前终端会话临时设置环境变量(如 PATH 和 LD_LIBRARY_PATH),使其指向新版本的 GCC,当您关闭这个终端或开启一个新的终端窗口时,环境变量会恢复原状,因此默认调用的仍然是系统自带的旧版 GCC,如果您需要在一个脚本或任务中持续使用新版本,请确保在该脚本的开头也执行 scl enable devtoolset-X bash 命令。
执行 yum install gcc 时提示 “没有可用的软件包” 或 “Cannot find a matching package”,该怎么办?
回答: 这个问题通常由以下几个原因造成:1. 网络问题:请确保您的服务器可以正常访问互联网,2. YUM 仓库配置错误:检查 /etc/yum.repos.d/ 目录下的仓库文件(.repo)是否配置正确,特别是对于已经停止维护(EOL)的 CentOS 7,其官方仓库可能已不可用,您可能需要将仓库配置指向 CentOS Vault 存档,3. 仓库缓存过期:尝试清理并重新生成 YUM 缓存,执行 sudo yum clean all 然后执行 sudo yum makecache,4. 系统版本过旧:确保您的系统已更新到该版本的最新状态,执行 sudo yum update,如果问题依旧存在,请仔细检查仓库配置,这是最常见的原因。