编译过程分为四个阶段,如下图所示:
编译链接基本原理
1、预编译
将.c文件生成.i文件,在预处理器里主要做以下处理
a、进行宏替换,也就是展开所有的宏定义,并将#define删除
b、处理条件预编译指令
c、处理各种头文件
d、删掉所有注释
e、添加文件标识和行号
f、保留#progma
注意:此时不会判断语法等错误

2、编译
将.i文件转为.s文件,在编译器里主要做以下处理
主要 将进行语法的处理,判断,将提示警告、错误等信息,并进行代码优化。

3、汇编
将.s文件转为.o文件,在汇编器里主要做以下处理
注意:.o文件又被称为可重定位的二进制文件
(重定位的解释可参考:https://blog.csdn.net/yesyes120/article/details/78944991)
a、将我们写的代码翻译成机器能够识别的语言即二进制代码

4、链接
将.o文件生成.exe文件,被称为可执行目标程序,在链接器里主要做以下处理
a、合并段(相同段之间)和符号表,整个链接过程就是将几个输入目标文件加工合并成一个输出文件。
b、 进行符号解析:在符号引用的地方找到符号定义的地方
c、分配地址和空间
d、 符号的重定位

注意:
该篇文字是对以前学习的整理,摘抄出处已经不清楚了,若有侵权,请告知,立删!

相关文章:

  • 2021-11-27
  • 2022-12-23
  • 2021-06-14
  • 2021-05-18
  • 2022-12-23
  • 2021-06-02
  • 2021-04-09
  • 2021-09-30
猜你喜欢
  • 2021-08-11
  • 2021-07-28
  • 2021-10-25
  • 2021-05-16
  • 2022-01-03
  • 2021-11-26
相关资源
相似解决方案