linux实例之gcc编译过程

叶sir学编程 2024-05-18 00:00:54

gcc命令是linux系统下自带的C/C++语言编译器,可以生成可代码编译成程序然后运行,但是这中间的原理,想必一般不会去了解,其实从写好的.c文件编译成程序,中间gcc编译器帮我们处理了很多事情,具体的过程分为以下几步:

1、GCC编译器将源码.c文件转成预处理.i文件,这一步称为预处理阶段,该阶段处理一些包括头文件,宏定义等以#开头的命令,并且删除.c文件中的所有注释

2、GCC编译器将预处理.i文件转成汇编.s文件,这一步称为编译阶段,该阶段主要是将代码翻译成机器可以识别的汇编代码

3、GCC编译器将汇编.s文件转为目标.o文件,这一步称为汇编阶段,该阶段是将汇编语言翻译成目标机器指令的过程

4、GCC编译器将目标文件.o文件转为可以运行的程序,这一步称为链接阶段,该阶段主要是地址和空间的分配,例如代码中命名的全局变量,指针等

以上四个步骤,都可以通过gcc命令来生成相应的文件

-E参数:表示将源码.c文件编译成.i文件,即第一步预处理阶段,如图1,-o表示要生成的目标文件

图1

-S参数:表示将预处理的.i文件编译成汇编.s文件,即第二步编译阶段,如图2,当然也可以直接将.c编译成.s文件(图2命令2)

图2

-c参数:将汇编.s文件编译成.o文件,即第三步汇编阶段,如图3,同理,也是可以直接将.c文件编译成.o文件(图3命令2)

图3

-o参数:该参数表示生成指定的输出文件,因此可以直接使用该参数将.c文件编程为可运行的程序,如图4命令1,当gcc不加任何参数,直接编译.c文件的时候,默认生成a.out文件,执行的时候,也是使用./a.out命令运行程序(图4命令2和命令3)

图4

0 阅读:0