IDE/build(构建)

《程序员的自我修养》笔记一:编译和链接

现在的 IDE 将编译和链接的过程合并到了一起


预处理『.i』

头文件被预编译成 『.i』 文件,经过预编译后的 『.i』 文件不包含任何宏定义,包含的文件被插入到 『.i』 文件中,判断宏定义是否正确或头文件包含是否正确时,可以查看预编译后的文件来确定。

  • #define 删除,展开所有宏定义
  • 处理所有条件预编译指令
  • 处理 #include 预编译指令
  • 删除所有注释
  • 添加行号和文件名标识,便于编译时给出行号信息
  • 保留所有的 #pragma 编译器指令

编译『.s』

《程序员的自我修养》笔记一:编译和链接

把预处理完的文件生成汇编代码文件,GCC 把预处理和编译合并为一个步骤

编译器

将高级语言翻译成机器语言的工具

  • 扫描
  • 语法分析
  • 语义分析
  • 源代码优化
  • 代码生成
  • 目标代码优化

汇编『.o』

将汇编代码转换为机器指令,每个汇编语句几乎都对应一条机器指令

目标文件

源代码经过编译后形成的汇编文件 .o


链接『.out』

《程序员的自我修养》笔记一:编译和链接

按照功能和性质将(软件)代码分为不同的功能模块,各个模块之间相互依赖又相对独立,链接就是将多个模块拼接成程序(软件)的过程。

链接器

将几个输入目标文件加工后合并成一个输入文件

  • 地址和空间分配
  • 符号决议(地址绑定、指令绑定)
  • 重定位

静态链接

将编译后的目标文件『.o』 与库 『lib』一起链接形成可执行文件

一组目标文件的包,将一些常用的代码编译成为目标文件后打包存放

相关文章:

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