第 2 章 GNU Compiler Collection(GCC)


GNU Compiler Collection (通常简写为 GCC )是一个可移植的编译器套件,它支持广泛的编程语言。

Red Hat Developer Toolset 由 GCC 11.2 提供。此版本高于 Red Hat Enterprise Linux 中包含的版本,并提供了很多程序错误修复和增强。

2.1. GNU C Compiler

2.1.1. 安装 C Compiler

在 Red Hat Developer Toolset 中,GNU C 编译器由 devtoolset-11-gcc 软件包提供,并使用 devtoolset-11-toolchain 自动安装,如 第 1.5 节 “安装 Red Hat Developer Toolset” 所述。

2.1.2. 使用 C Compiler

要在命令行中编译 C 程序,请运行 gcc 编译器,如下所示:

$ scl enable devtoolset-11 'gcc -o output_file source_file...'
Copy to Clipboard Toggle word wrap

这会在当前工作目录中创建名为 output_file 的二进制文件。如果省略 -o 选项,编译器会默认创建一个名为 a.out 的文件。

在处理由多个源文件组成的项目时,通常会先为每个源文件编译对象文件,然后将这些对象文件链接到一起。这样,当您更改单个源文件时,您只能重新编译此文件,而无需编译整个项目。要在命令行中编译对象文件,请执行以下操作:

$ scl enable devtoolset-11 'gcc -o object_file -c source_file'
Copy to Clipboard Toggle word wrap

这将创建一个名为 object_file 的对象文件。如果省略 -o 选项,编译器会创建一个名为 的文件,该文件名为 .o 文件扩展名。将对象文件链接到一起并创建二进制文件:

$ scl enable devtoolset-11 'gcc -o output_file object_file...'
Copy to Clipboard Toggle word wrap

请注意,您可以使用 scl 程序执行任何命令,从而导致使用 Red Hat Developer Toolset 二进制文件运行它,而不是 Red Hat Enterprise Linux 系统等同的 Red Hat Enterprise Linux 系统。这可让您使用 Red Hat Developer Toolset gcc 作为默认值运行 shell 会话:

$ scl enable devtoolset-11 'bash'
Copy to Clipboard Toggle word wrap
注意

验证您使用 gcc 的版本:

$ which gcc
Copy to Clipboard Toggle word wrap

Red Hat Developer Toolset 的 gcc 可执行路径以 /opt 开头。另外,您可以使用以下命令确认与 Red Hat Developer Toolset gcc 的版本号匹配:

$ gcc -v
Copy to Clipboard Toggle word wrap

例 2.1. 在命令行中编译 C 程序

考虑名为 hello.c 的源文件,其内容如下:

#include <stdio.h>

int main(int argc, char *argv[]) {
  printf("Hello, World!\n");
  return 0;
}
Copy to Clipboard Toggle word wrap

使用 Red Hat Developer Toolset 的 gcc 编译器在命令行中编译此源代码:

$ scl enable devtoolset-11 'gcc -o hello hello.c'
Copy to Clipboard Toggle word wrap

这会在当前工作目录中创建一个名为 hello 的新二进制文件。

2.1.3. 运行 C 程序

gcc 编译程序时,它会创建一个可执行的二进制文件。要在命令行中运行这个程序,请切换到包含可执行文件的目录并运行它:

$ ./file_name
Copy to Clipboard Toggle word wrap

例 2.2. 在命令行中运行 C 程序

假设您已像 例 2.1 “在命令行中编译 C 程序” 所示成功编译了 hello 二进制文件,您可以在 shell 提示符后输入以下内容来运行该文件:

$ ./hello
Hello, World!
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat