当前位置: 移动技术网 > IT编程>数据库>Mysql > 程序编译详情过程

程序编译详情过程

2017年12月23日  | 移动技术网IT编程  | 我要评论

在运行一个程序时,事实上经过了预编译,编译,汇编,链接四个过程。只不过我们在运行程序时,这些步骤被隐藏了。

①预编译:

把源代码文件如main.c,被预编译成一个.i文件。在linux下的命令为:

gcc-E main.c -o main.i

预编译的具体任务:

1.将所有的“#define”删除,并展开所有的宏定义。

2.处理所有条件预编译指令。

3.处理头文件预编译指令,将被包含的文件插入到该预编译指令的位置。

4.删除所有的注释。

5.添加行号和文件名标识。

6.保留所有的#pragma编译器指令,因为编译器需要使用它们。

预编译的作用:

经过预编译后的.i文件不包含任何宏定义,并且包含的文件也已经被插入到.i文件中。当我们无法判断宏定义是否正确或头文件包含是否正确时,可以查看预编译后的文件夹来确定问题。

②编译:

把预编译后的文件如main.i,编译成.s文件。在linux下的命令为:

gcc-S main.i -o main.s

编译的具体任务:

把预编译完的文件进一步的进行一系列的语法,词法,解析检查。

③汇编:

把编译后的文件如main.s,汇编成.o文件。在linux下的命令为:

gcc-c main.s -o main.o

汇编的具体任务:

通过汇编代码转化为机器可以执行的指令。

④链接

把汇编后的文件如main.o,链接成.exe可执行文件。在linux下的命令为:

gcc main.o -o main

链接的具体任务:将不同部分的代码和数据收集组合为一个单一文件的过程。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网