首页 > 编程知识 正文

Gcc编译器,c语言编译器代码

时间:2023-05-03 15:03:01 阅读:155090 作者:3764

来自: 51CTO GCC使用入门

一般来说,GCC是GUN Compiler Collection的简称,因为除了编译器以外还包含相关工具,所以可以将使用人类容易使用的高级语言编写的源代码构建为计算机可以直接执行的二进制代码。 GCC是Linux平台上最常用的编译器,是Linux平台编译器的事实标准。 另外,在Linux平台下的嵌入式开发领域,GCC也是最普遍使用的编译器。 GCC之所以被广泛采用是因为它可以支持多种目标体系结构。 例如,基于主机的开发(简单地说,为了在某个平台上编译程序,是在该平台上编译)和交叉编译(也就是说,在a平台上编译的程序是在平台上编译的) 目前,GCC支持的体系结构有40多种,常见的有X86系列、Arm、PowerPC等。 GCC还可在Linux、Solaris和Windows等各种操作系统上运行。

详细了解GCC的下载和安装

Linux编程开始GCC基本用法

除了上述语言之外,GCC还支持多种语言,包括c、Ada、Java、Objective-C、FORTRAN和Pascal。

本系列文章不仅介绍GCC的基本功能,还介绍优化等高级功能。 我们还将考察GCC的图像操作工具,如size和objcopy。 这将在下一篇文章中讨论。

二.程序编译过程

对于GUN编译器,程序的编译经历了四个阶段:预处理、编译、汇编和连接,如下图所示。

功能上,预处理、编译、汇编是三个不同的阶段,但在GCC的实际操作中,可以把这三个步骤合并成一个步骤来执行。 本节以C语言为例,介绍各个阶段的输入和输出。

预处理阶段,输入c语言的源文件。 通常是*.c。 通常带有头文件(如. h )的包含文件。 此阶段主要处理源文件中的#ifdef、#include和#define命令。 在此阶段将生成中间文件*.i,但在实际工作中不需要专门生成这样的文件。 因为基本上是不能使用的。 如果无法生成此类文件,请使用以下命令示例:

gcc -E test.c -o test.i

在编译阶段,输入中间文件*.i,编译后生成汇编语言文件*.s。 与此阶段对应的GCC命令如下:

GCC -S test.i -o test.s

在装配阶段,将输入的装配文件*.s转换为机器语言*.o。 与此阶段对应的GCC命令如下:

GCC -c test.s -o test.o

最后,将输入的机器代码文件*.s (和其他机器代码文件和库文件)组合成可在连接阶段执行的二进制代码文件。 可以使用以下示例命令执行此过程:

GCC test.o -o test

上面介绍了GCC编译过程的四个阶段和相应的命令。 进一步介绍一般的GCC模式。

三. GCC常用模式

本节介绍了GCC常用的编译模式和编译连接模式两种模式。 通过一个例子说明各模式的使用方法。 为了简单起见,假设所有源代码都位于一个文件test.c中。 要将此源代码直接编译为可执行文件,请使用以下命令。

$ GCC -o test

其中test.c是源文件,生成的可执行代码存储在名为test的文件中。 此文件是机器代码,可执行。 -o是用于生成可执行文件的输出选项。 如果希望源文件只生成目标文件,请使用标记-c。 详细命令如下。

$ GCC -c test.c

缺省情况下,生成的目标文件的名称为test.o,但也可以按如下方式指定输出文件的名称:

$ GCC -c test.c -o

此命令将编译的目标文件命名为mytest.o,而不是缺省的test.o。

到目前为止,我们谈论的程序只涉及一个源文件。现实中,一个程序的源代码通常包含在多个源文件中。 我该怎么办? 没关系。 尽管如此,用GCC处理并不复杂。 请参阅以下示例:

$ gcc-otestfirst.c second.c third.c

此命令同时编译三个源文件first.c、second.c和third.c,并将其连接到名为test的可执行文件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。