编译链接运行原理——(一)进程的诞生

     编译链接一直以来都是程序员所必知必会的知识,如果你都不清楚一个程序到底是如何从一个手写的源文件变成计算机所能识别的指令且能按部就班的执行的话,那么你就不是一个合格的程序员了。这是我的一个老师告诉我的。但是学习了这么久对这块的知识仍是比较模糊,虽然反复学习了很多遍,仍是没有完全掌握,这可能与我的个人学习习惯有关,不太擅长总结,就像我的blog只有聊聊几篇,从今天起我将系统性的对我所学的这些进行一个总结,加深一下自己对这些知识的理解。

      那么言归正传,一个源文件到一个进程在这中间到底经历了些什么呢?

  1. 预编译
  2. 编译
  3. 汇编
  4. 链接
  5. 运行

      简单概括就是这五步,那么这五步具体究竟做了些什么呢?接下来我就一步一步细细回顾一下。

     1.预编译

      预编译简单来讲就是处理‘#’和标识的。

  • 删除#define,进行宏替换。
  • 处理预编译指令“#if,#endif,#ifdef,#elif”等等。
  • 处理头文件“#include”,进行递归展开。
  • 删除注释。
  • 添加行号以及文件标识,便于编译出错时,方便报错快速锁定行号。
  • 保留#program,交给编译器。这是编译器所必须的。

   经过预编译后,这里以c/c++举例,就会生成.i文件。

     2.编译

  • 词法分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值