第 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...'
这会在当前工作目录中创建名为 output_file 的二进制文件。如果省略 -o
选项,编译器会默认创建一个名为 a.out
的文件。
在处理由多个源文件组成的项目时,通常会先为每个源文件编译对象文件,然后将这些对象文件链接到一起。这样,当您更改单个源文件时,您只能重新编译此文件,而无需编译整个项目。要在命令行中编译对象文件,请执行以下操作:
$ scl enable devtoolset-11 'gcc -o object_file -c source_file'
这将创建一个名为 object_file 的对象文件。如果省略 -o
选项,编译器会创建一个名为 的文件,该文件名为 .o
文件扩展名。将对象文件链接到一起并创建二进制文件:
$ scl enable devtoolset-11 'gcc -o output_file object_file...'
请注意,您可以使用 scl
程序执行任何命令,从而导致使用 Red Hat Developer Toolset 二进制文件运行它,而不是 Red Hat Enterprise Linux 系统等同的 Red Hat Enterprise Linux 系统。这可让您使用 Red Hat Developer Toolset gcc
作为默认值运行 shell 会话:
$ scl enable devtoolset-11 'bash'
验证您使用 gcc
的版本:
$ which gcc
Red Hat Developer Toolset 的 gcc
可执行路径以 /opt
开头。另外,您可以使用以下命令确认与 Red Hat Developer Toolset gcc
的版本号匹配:
$ gcc -v
例 2.1. 在命令行中编译 C 程序
考虑名为 hello.c
的源文件,其内容如下:
#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, World!\n"); return 0; }
使用 Red Hat Developer Toolset 的 gcc
编译器在命令行中编译此源代码:
$ scl enable devtoolset-11 'gcc -o hello hello.c'
这会在当前工作目录中创建一个名为 hello
的新二进制文件。
2.1.3. 运行 C 程序
当 gcc
编译程序时,它会创建一个可执行的二进制文件。要在命令行中运行这个程序,请切换到包含可执行文件的目录并运行它:
$ ./file_name
例 2.2. 在命令行中运行 C 程序
假设您已像 例 2.1 “在命令行中编译 C 程序” 所示成功编译了 hello
二进制文件,您可以在 shell 提示符后输入以下内容来运行该文件:
$ ./hello
Hello, World!