CentOS 安装 GCC 及 G++ 完全指南:从基础到进阶
GCC(GNU Compiler Collection)是一套由 GNU 开发的编程语言编译器,支持 C、C++、Java、Go 等多种语言。其中,gcc 是 C 语言编译器,g++ 是 C++ 语言编译器,二者是 Linux 系统开发中不可或缺的工具。无论是编译开源软件、开发应用程序,还是进行系统级编程,GCC 都是核心依赖。
本文将详细介绍在 CentOS 系统中安装 GCC 和 G++ 的完整流程,包括基础安装、升级到新版本(如通过 Developer Toolset)、验证方法、示例使用及常见问题解决。无论你是 CentOS 7、8 还是 9 用户,都能找到适合的操作步骤。
目录#
1. 前提条件#
在开始安装前,请确保满足以下条件:
- 系统版本:CentOS 7/8/9(本文以 CentOS 7 和 CentOS 8/9 为例,操作略有差异)。
- 权限:拥有
sudo权限(或 root 用户),用于执行安装命令。 - 网络:服务器已连接互联网,能够访问 CentOS 官方仓库或第三方源。
- 工具:确保
yum(CentOS 7)或dnf(CentOS 8/9)包管理器可用。
2. 检查是否已安装 GCC/G++#
首先,检查系统是否已预装 GCC 或 G++。打开终端,执行以下命令:
# 检查 GCC 版本
gcc --version
# 检查 G++ 版本
g++ --version- 如果输出类似
gcc (GCC) x.x.x的信息,说明已安装,可跳过安装步骤直接使用(或根据需求升级版本)。 - 如果提示
command not found,则需要安装。
3. 安装方法#
3.1 通过系统默认仓库安装(稳定但版本较旧)#
CentOS 官方仓库中提供了 GCC/G++ 包,但版本通常较旧(例如 CentOS 7 默认 GCC 版本为 4.8.5,CentOS 8 为 8.5.0,CentOS 9 为 11.2.1)。适合对版本无特殊要求的场景。
3.1.1 CentOS 7(使用 yum)#
-
更新系统包索引(推荐,确保获取最新的包信息):
sudo yum update -y -
安装 GCC 和 G++:
sudo yum install -y gcc g++
3.1.2 CentOS 8/9(使用 dnf)#
CentOS 8 及以上版本默认使用 dnf 作为包管理器,命令类似:
-
更新系统包索引:
sudo dnf update -y -
安装 GCC 和 G++:
sudo dnf install -y gcc g++
说明:默认仓库安装的 GCC/G++ 会直接替换系统原有的编译器(如果存在),适合对版本要求不高的场景。
3.2 通过 Developer Toolset 安装新版本(推荐)#
如果需要使用较新的 GCC 版本(如 GCC 11、12),推荐使用 Developer Toolset(DTS)。DTS 是 Red Hat 提供的软件开发工具集,包含更新版本的 GCC、GDB 等工具,且不会覆盖系统默认的旧版 GCC(避免破坏依赖旧版 GCC 的系统组件)。
3.2.1 启用 Software Collections(SCL)仓库#
DTS 包位于 Software Collections 仓库中,需先启用:
-
CentOS 7:
sudo yum install -y centos-release-scl -
CentOS 8/9: CentOS 8/9 的 SCL 仓库已整合到 AppStream 中,无需额外安装,直接安装 DTS 即可。
3.2.2 安装指定版本的 DTS#
DTS 提供多个版本(如 devtoolset-7、devtoolset-11 等,版本号对应 GCC 主版本)。例如,安装 GCC 11:
# CentOS 7:安装 devtoolset-11(包含 GCC 11)
sudo yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++
# CentOS 8/9:安装 devtoolset-11
sudo dnf install -y devtoolset-11-gcc devtoolset-11-gcc-c++可选版本:通过
yum search devtoolset或dnf search devtoolset查看可用的 DTS 版本(如devtoolset-12对应 GCC 12)。
3.2.3 启用 DTS(临时/永久)#
DTS 安装后不会自动生效,需手动启用:
-
临时启用(当前终端会话有效):
scl enable devtoolset-11 bash执行后,当前终端的
gcc和g++将切换为 DTS 版本。 -
永久启用(对所有新终端生效): 将启用命令添加到用户的 shell 配置文件(如
~/.bashrc或~/.bash_profile):echo "source scl_source enable devtoolset-11" >> ~/.bashrc source ~/.bashrc # 立即生效
注意:永久启用可能影响依赖系统默认 GCC 的工具(如
yum/dnf),建议仅在开发环境临时启用。
4. 验证安装结果#
安装完成后,再次执行版本检查命令,确认 GCC/G++ 已正确安装:
# 检查 GCC 版本
gcc --version
# 检查 G++ 版本
g++ --version- 若通过默认仓库安装,输出应为系统默认版本(如 CentOS 7 显示
4.8.5)。 - 若通过 DTS 安装并启用,输出应为 DTS 版本(如
11.2.1)。
5. 示例:编译 C/C++ 程序#
通过简单的 "Hello World" 程序验证编译器功能。
5.1 编译 C 程序#
-
创建源文件
hello.c:#include <stdio.h> int main() { printf("Hello, GCC (C)!\n"); return 0; } -
用
gcc编译:gcc hello.c -o hello_c -
运行可执行文件:
./hello_c输出:
Hello, GCC (C)!
5.2 编译 C++ 程序#
-
创建源文件
hello.cpp:#include <iostream> using namespace std; int main() { cout << "Hello, G++ (C++)!" << endl; return 0; } -
用
g++编译:g++ hello.cpp -o hello_cpp -
运行可执行文件:
./hello_cpp输出:
Hello, G++ (C++)!
6. 常见问题与 troubleshooting#
问题 1:gcc: command not found#
- 原因:未安装 GCC 或未启用 DTS。
- 解决:
- 确认已执行安装命令(
yum install gcc或 DTS 安装)。 - 若使用 DTS,检查是否已通过
scl enable启用。
- 确认已执行安装命令(
问题 2:依赖缺失(如 libmpfr.so.4: cannot open shared object file)#
- 原因:系统缺少 GCC 依赖的库文件。
- 解决:安装缺失的依赖包:
# CentOS 7 sudo yum install -y mpfr-devel gmp-devel libmpc-devel # CentOS 8/9 sudo dnf install -y mpfr-devel gmp-devel libmpc-devel
问题 3:DTS 安装失败(No package devtoolset-11 available)#
- 原因:未启用 SCL 仓库。
- 解决:CentOS 7 需先安装
centos-release-scl,CentOS 8/9 需确保 AppStream 仓库已启用:# CentOS 8/9 检查 AppStream 仓库 sudo dnf repolist | grep appstream
7. 最佳实践#
- 优先使用 DTS 安装新版本:避免直接升级系统默认 GCC,防止破坏依赖旧版的系统组件。
- 按需启用 DTS:仅在开发时临时启用 DTS,避免影响系统工具(如
yum/dnf)。 - 定期更新系统:安装前执行
yum update或dnf update,确保依赖包版本兼容。 - 验证编译结果:通过简单程序测试编译器功能,确保安装正确。
- 多版本共存:如需同时使用多个 GCC 版本,可通过 DTS 切换(如
scl enable devtoolset-11 bash和scl enable devtoolset-12 bash)。
8. 总结#
本文详细介绍了在 CentOS 系统中安装 GCC 和 G++ 的两种方法:通过系统默认仓库安装稳定版,或通过 Developer Toolset 安装新版本。前者适合对版本无要求的场景,后者则推荐用于需要较新编译器特性的开发环境。通过本文的步骤,你可以快速完成 GCC/G++ 的安装、验证及基础使用,并解决常见问题。