在 CentOS 系统中,无论是进行软件开发、编译开源软件,还是安装某些需要从源码构建的系统工具,GNU 编译器集合(GCC)都是不可或缺的核心组件,GCC 是一个功能强大的编译器系统,支持多种编程语言,如 C、C++、Objective-C、Fortran、Ada 和 Go 等,通过 CentOS 的包管理器 yum
(在 CentOS 8 及更新版本中为 dnf
),安装 GCC 变得十分便捷,本文将详细介绍如何使用 yum
在 CentOS 上安装 GCC,涵盖基础安装、开发工具组安装、特定版本安装以及验证方法,旨在为系统管理员和开发者提供一份清晰、全面的指南。
基础安装:安装 GCC 核心编译器
对于大多数只需要编译 C 语言代码的场景,安装 GCC 核心包就足够了,这是最直接、最轻量级的安装方式。
打开终端,使用以下命令即可安装:
sudo yum install gcc
执行此命令后,yum
会执行以下操作:
- 解析依赖:
yum
会自动计算安装gcc
所需的所有依赖包,mpfr
、libmpc
、cpp
等。 - 显示交易摘要:系统会列出即将安装的软件包及其总下载大小,并要求用户确认。
- 下载与安装:用户输入
y
并回车后,yum
会从配置的软件源中下载所有必要的包,并依次进行安装。
安装完成后,你可以通过检查版本来验证 GCC 是否已成功安装。
推荐方式:安装“开发工具”组
在实际的软件开发环境中,仅仅有编译器是不够的,通常还需要 make
(构建工具)、autoconf
(自动配置脚本生成器)、automake
(自动生成 Makefile)、gdb
(调试器)等一系列辅助工具,手动逐一安装这些工具非常繁琐。
yum
提供了“软件包组”的概念,可以将一系列相关的软件打包在一起进行安装。Development Tools
就是这样一个至关重要的软件包组,它包含了构建软件所需的一整套基础工具。
安装该组的命令如下:
sudo yum groupinstall "Development Tools"
这个命令会一次性安装一个完整的开发环境,以下是该组中包含的一些核心工具及其功能说明:
工具名称 | 功能描述 |
---|---|
gcc | GNU C 编译器,用于编译 C 语言代码。 |
gcc-c++ | GNU C++ 编译器,用于编译 C++ 语言代码。 |
make | 自动化构建工具,根据 Makefile 文件管理和编译项目。 |
autoconf | 生成用于配置软件源代码的 Shell 脚本(configure)。 |
automake | 根据 autoconf 的规则,自动生成 Makefile.in 文件。 |
binutils | 一套二进制工具集,包括链接器 ld 和汇编器 as 。 |
gdb | GNU 调试器,用于调试程序,分析运行时错误。 |
strace | 用于跟踪进程执行时所接收的系统调用和所接收的信号。 |
flex | 一个生成词法分析器的工具。 |
bison | 一个生成语法分析器的工具。 |
对于绝大多数开发者而言,安装 Development Tools
组是最佳选择,因为它能确保你拥有一个功能完备、开箱即用的编译和构建环境。
进阶需求:安装特定版本的 GCC
CentOS 的官方软件源为了保持系统的稳定性和兼容性,通常提供的软件版本相对较旧,CentOS 7 默认提供的 GCC 版本是 4.8.5,它不完全支持 C++11/14/17 的新特性,如果你的项目需要更高版本的 GCC,GCC 8 或 GCC 9,可以使用 CentOS Software Collections (SCLo) 仓库。
SCLo 允许你在同一系统中安装和使用多个版本的软件,而不会影响系统的默认环境。
以下是使用 SCLo 安装 GCC 9 的步骤:
安装 SCLo 发布仓库
sudo yum install centos-release-scl
安装所需版本的 GCC
SCLo 中的 GCC 包通常以devtoolset-<version>-gcc
的形式命名,安装 DevToolset-9(包含 GCC 9):sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++
启用新版本的 GCC
安装完成后,新版本的 GCC 并不会覆盖系统默认的旧版本,你需要通过scl
命令来临时启用它,这个启用只对当前的 Shell 会话有效。scl enable devtoolset-9 bash
执行此命令后,你会开启一个新的 Bash Shell,
gcc --version
将显示为 9.x 版本,在这个 Shell 中编译的程序将使用新的 GCC 版本。
验证安装
无论采用哪种方式安装,验证都是必不可少的步骤。
检查 GCC 版本
在终端中输入:gcc --version
如果安装成功,系统会输出已安装 GCC 的版本信息。
编译一个简单的程序
创建一个名为hello.c
的文件,内容如下:#include <stdio.h> int main() { printf("Hello, CentOS!n"); return 0; }
使用 GCC 编译并运行它:
gcc -o hello hello.c ./hello
如果终端成功输出
Hello, CentOS!
,则证明你的 GCC 工具链已经完全正常工作。
相关问答 FAQs
我只需要编译 C++ 代码,是否必须安装整个 “Development Tools” 组?
解答: 不是必须的,如果你确定你的工作流仅涉及 C++ 编译,并且不依赖于 make
等构建工具(你使用的是集成开发环境(IDE)如 CLion 或 VS Code,它们可以管理构建过程),那么你可以只安装 C++ 编译器,命令如下:sudo yum install gcc-c++
绝大多数开源项目和系统级软件都依赖于 make
和 autoconf
等工具,为了避免后续遇到“找不到 make 命令”之类的错误,强烈建议直接安装 Development Tools
组,这是一个更省心、更通用的选择。
使用 SCLo 安装的新版本 GCC 如何在系统重启后依然生效?
解答: scl enable devtoolset-9 bash
命令的作用是临时为当前 Shell 会话设置环境变量(如 PATH
和 LD_LIBRARY_PATH
),因此重启或开启新的终端后会失效,要使其永久生效,你需要将启用命令添加到 Shell 的配置文件中,~/.bashrc
或 ~/.bash_profile
。
你可以将以下行添加到 ~/.bashrc
文件的末尾:source scl_source enable devtoolset-9
这样做会使得你每次登录时都默认使用新版本的 GCC,虽然方便,但可能会与某些依赖系统旧版 GCC 的系统脚本或软件产生兼容性问题,除非你明确知道自己在做什么,否则推荐在需要时手动执行 scl enable
命令,以保持系统环境的纯净和稳定。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复