Linux GCC
Linux GCC
在Linux中,GCC代表 GNU编译器集合。它是用于各种编程语言的编译器系统。它主要用于编译C和C ++程序。它以源程序的名称作为必需的参数。其余参数是可选的,例如调试,警告,目标文件和链接库。
GCC是GNU工具链的核心组件。使用GCC可以编译各种开源项目,例如Linux内核和GNU工具。
它是根据GPL(通用公共许可证)发行的。第一个版本 GCC 1.0 于1987年发布。它仅用于C编程语言,但在同一年,它又扩展了 C ++编程语言。后来,它被开发用于其他编程语言,例如Objective-C,Objective-C ++,Fortran, Java ,Ada,开始等等。它的最新版本具有大大改进的编程语言实现。
它是GNU OS的官方合作伙伴;它是GNU OS的官方合作伙伴。因此,它已被用作基于Linux的系统的标准编译器。
GCC的组件
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)。考虑以下命令:
上面的命令将创建一个中间文件'hello.i。
编译: 在此步骤中,将预处理的源代码编译为以下代码的汇编代码: 特定的处理器。
以上命令将创建一个汇编文件" hello.s"。 "-s"选项用于指定生成汇编代码而不是目标代码。
汇编: 汇编代码被转换为机器代码。它将创建一个目标文件" hello.o"。
链接器: : 链接器(ld.exe)是编译器过程的最后一步。它将目标代码与库代码链接在一起,并生成一个可执行文件。
上面的命令将创建一个可执行文件'hello.exe。
在Linux上安装GCC
默认情况下,它附带的内容最多Linux发行版。我们可以通过执行以下命令来验证它:
上面的命令将显示GCC工具的已安装版本。如果尚未安装,请按照以下步骤进行安装:
步骤1: 更新软件包列表。
要更新软件包列表,请执行以下命令:
它将询问系统管理密码,输入密码。它将开始更新系统软件包。考虑以下输出快照:
第二步: 安装基本构建软件包。
它包含各种软件包,例如gcc,g ++和make实用程序。执行以下命令进行安装:
sudo apt install build-essential
以上命令将为GCC实用程序安装所需的软件包。现在,我们可以在机器中使用GCC实用程序了。考虑以下输出快照:
第3步: 验证安装。
要验证安装,请执行gcc-version命令,如下所示:
它将显示GCC实用程序的已安装版本。要显示有关该版本的更多详细信息,请使用"-v"选项。考虑以下输出:
在这里,我们已经成功安装了GCC实用程序。让我们来理解使用它。我们将使用GCC创建和执行一些c程序。
通过gcc运行第一个C程序
创建一个基本的 c程序"世界您好!"。创建一个文件" hello.c",并在其中添加以下代码:
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
现在,按如下所示编译hello.c:
如果我们直接运行hello.c,它将引发错误。将其设置为可执行文件,Linux系统的默认可执行文件为a.out。要执行文件,请执行chmod命令,如下所示:
现在,以以下方式运行c程序:
考虑以下输出:
GCC命令示例
gcc命令的一些有用示例如下:
指定目标文件名
默认情况下,gcc命令将目标文件创建为'a.out "。如果要更改默认输出文件名,请使用'-o'选项。
让我们执行基本的gcc命令:
上面的命令将生成目标文件" a.out"。要指定目标文件名,请执行以下命令:
它将生成输出文件" hello"。考虑以下输出:
启用所有警告
要在输出中启用所有警告,请在gcc命令中使用'-Wall'选项。让我们在hello.c的主要函数中创建一个变量。考虑以下代码:
hello.c:
#include <stdio.h>
int main() {
int a;
printf("Hello, world!\n");
return 0;
}
如果我们使用-Wall选项编译以上代码。它将引发警告。执行以下命令来编译文件:
以上命令将显示警告。考虑以下输出:
生成编译过程的逐步输出
我们只能产生编译过程的逐步输出。
产生预处理器输出
我们只能产生预处理使用'-E'选项输出。考虑以下命令:
通过上述命令,将生成包含预处理输出的文件'hello.i'。考虑以下输出:
产生汇编代码
要生成汇编代码,请使用"-S"选项执行命令。考虑以下命令:
以上命令将生成" hello.s"。包含汇编代码的文件。考虑以下输出:
产生已编译的代码
我们只能使用'-C'选项生成编译后的代码。考虑以下命令:
上面的命令将生成文件" a.out",仅包含机器代码或编译后的代码。考虑以下输出:
产生编译过程的所有中间文件
我们可以使用"-save-temp"选项来生成编译过程的所有中间文件。考虑以下输出:
上面的命令将立即生成所有中间文件和可执行文件。考虑以下输出:
详细打印输出。
我们可以显示gcc命令采取的每一个步骤的详细信息。为此,请使用"-v"选项执行命令。
考虑以下输出快照:
我们已经讨论了一些最有用的示例gcc命令。由于gcc命令提供了大量选项,因此您在使用它时可能会卡在任何地方。让我们看看如何从终端上自己获得帮助。
GCC手册
如果在使用gcc命令时遇到困难,可以从您的帮助中获取帮助。终端。要从命令行访问手册,请执行以下man命令:
上面的命令将显示手册,其中包含说明以及所支持选项的列表以及简短说明。考虑以下输出快照:
您可以滚动输出以了解更多信息。按下" h"键寻求帮助,然后按q退出手册并返回终端。