📜  GCC Linux

📅  最后修改于: 2020-12-08 03:09:43             🧑  作者: Mango

GCC Linux

在Linux中,GCC代表GNU Compiler Collection 。它是用于各种编程语言的编译器系统。它主要用于编译C和C++程序。它以源程序的名称作为必要参数。其余参数是可选的,例如调试,警告,目标文件和链接库。

GCC是GNU工具链的核心组件。使用GCC编译了各种开源项目,例如Linux内核和GNU工具。

它根据GPL(通用公共许可证)进行分发。第一个版本GCC 1.0于1987年发布。它仅适用于C编程语言,但在同一年,它又扩展了Go等。它的最新版本具有大大改进的编程语言实现。

它是GNU OS的官方合作伙伴;因此,它已被用作基于Linux的系统的标准编译器。

海湾合作委员会的组成

GCC是便携式工具,可以在许多操作系统上运行。而且,可以使用某些工具(例如Cygwin,MinGW和MinGW-W64)将其移植到Windows 。由于它是GNU工具链的关键组件,因此包含以下用于开发应用程序和操作系统的组件:

GNU编译器集合(GCC):它是适用于多种语言的编译器套件,例如C / C++和Objective-C / C++。

GNU Make:这是一个自动化工具,用于编译和构建应用程序。

GNU Binutils:这是一个包含二进制实用程序工具(如链接器汇编器)的套件。

GNU调试器(GDB)。它用于调试应用程序。

GNU Autotools:这是一个构建系统,其中包含一些实用工具,例如Autoconf,Autoheader,Automake和Libtool。

GNU Bison:它是lex和yacc的解析器生成器。

GCC编译程序

GCC通过以下四个步骤来编译程序并使之成为可执行程序:

预处理:在此步骤中,GNU预处理器(cpp.exe)创建一个具有源代码的中间文件。预处理器包括标题(#include)并扩展宏(#define)。考虑以下命令:

cpp hello.c > hello.i

上面的命令将创建一个中间文件“ hello.i”。

编译:在此步骤中,将预处理的源代码编译为特定处理器的汇编代码。

gcc -S hello.i

上面的命令将创建一个汇编文件“ hello.s”。 “ -s”选项用于指定生成汇编代码而不是目标代码。

汇编:汇编代码转换为机器代码。它将创建一个目标文件“ hello.o”。

as -o hello.o hello.s

链接器:链接器(ld.exe)是编译器过程的最后一步。它将目标代码与库代码链接在一起,并生成一个可执行文件。

ld -o hello.exe hello.o

上面的命令将创建一个可执行文件“ hello.exe”。

在Linux上安装GCC

默认情况下,它带有大多数Linux发行版。我们可以通过执行以下命令来验证它:

gcc -version

上面的命令将显示GCC工具的安装版本。如果尚未安装,请按照以下步骤进行安装:

步骤1:更新软件包列表。

要更新软件包列表,请执行以下命令:

sudo apt update

它将要求输入系统管理密码,然后输入密码。它将开始更新系统软件包。考虑下面的输出快照:

步骤2:安装build-essential软件包。

它包含各种软件包,例如gcc,g ++和make实用程序。执行以下命令进行安装:

sudo apt install build-essential

上面的命令将安装GCC实用程序所需的软件包。现在,我们可以在机器中使用GCC实用程序了。考虑下面的输出快照:

步骤3:验证安装。

要验证安装,请执行gcc -version命令,如下所示:

gcc --version

它将显示GCC实用程序的已安装版本。要显示有关该版本的更多详细信息,请使用“ -v”选项。考虑以下输出:

在这里,我们已经成功安装了GCC实用程序。让我们来理解使用它。我们将使用GCC创建并执行一些c程序。

由gcc运行第一个C程序

创建一个基本的c程序“ Hello world!”。创建一个文件“ hello.c”,并在其中添加以下代码:

#include 
int main() {
    printf("Hello, world!\n");
    return 0;
}

现在,如下编译hello.c:

gcc hello.c

如果我们直接运行hello.c,它将引发错误。将其设置为可执行文件,Linux系统的默认可执行文件为a.out。要执行文件,请执行chmod命令,如下所示:

chmod a+x a.out

现在,运行c程序为:

./a.out

考虑以下输出:

GCC命令示例

gcc命令的一些有用示例如下:

  • 指定对象文件名

默认情况下,gcc命令将目标文件创建为'a.out '。如果要更改默认输出文件名,请使用“ -o”选项。

让我们执行基本的gcc命令:

gcc hello.c

上面的命令将生成目标文件“ a.out”。要指定目标文件名,请执行以下命令:

gcc hello.c -o hello

它将生成输出文件“ hello”。考虑以下输出:

  • 启用所有警告

要在输出中启用所有警告,请在gcc命令中使用“ -Wall”选项。让我们在hello.c的主要函数中创建一个变量。考虑下面的代码:

你好ç:

#include 
int main() {
int a;
    printf("Hello, world!\n");
    return 0;
}

如果我们使用-Wall选项编译以上代码。它将引发警告。执行以下命令来编译文件:

gcc -wall hello.c

上面的命令将显示警告。考虑以下输出:

  • 产生编译过程的逐步输出

我们只能产生编译过程的逐步输出。

产生预处理器输出

我们只能使用'-E'选项产生预处理输出。考虑以下命令:

gcc -E hello.c > hello.i

通过以上命令,将生成包含预处理输出的文件“ hello.i”。考虑以下输出:

产生汇编代码

要生成汇编代码,请使用“ -S”选项执行命令。考虑以下命令:

gcc -S hello.c > hello.s

上面的命令将生成“ hello.s”。包含汇编代码的文件。考虑以下输出:

产生编译的代码

我们只能使用'-C'选项生成编译后的代码。考虑以下命令:

gcc -C hello.c

上面的命令将生成文件“ a.out”,仅包含机器代码或编译后的代码。考虑以下输出:

产生编译过程的所有中间文件

我们可以使用'-save-temp'选项生成编译过程的所有中间文件。考虑以下输出:

gcc -save-temps hello.c

上面的命令将立即生成所有中间文件和可执行文件。考虑以下输出:

  • 详细打印输出。

我们可以显示gcc命令采取的每个步骤的详细信息。为此,请使用“ -v”选项执行命令。

gcc -W -v hello.c

考虑下面的输出快照:

我们已经讨论了gcc命令的一些最有用的示例。由于gcc命令提供了大量选项,因此您在使用它时可能会卡在任何地方。让我们看看如何从终端上自己获得帮助。

GCC手册

如果在使用gcc命令时遇到任何困难,可以从终端获得帮助。要从命令行访问手册,请执行以下man命令:

man gcc

上面的命令将显示手册,其中包含说明以及所支持选项的列表以及简短说明。考虑下面的输出快照:

您可以滚动输出以了解更多信息。按“ h”键寻求帮助,然后按q退出手册并返回终端。