CC++源程序到可执⾏程序exe的全过程
源⽂件⽣成可执⾏⽂件的过程总共是经历了预处理、编译、汇编、链接四个过程。
掖源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→⽬标程序(object code)→连接器(链接器,Linker)→可执⾏程序(executables
1.预处理——⽣成 .i ⽂件
主要作⽤:
张曼玉身高1. 删除 #define ,展开所有宏定义
2. 处理条件预编译
3. 处理#include,将头⽂件插⼊对应位置
4. 删除所有注释
5. 添加⾏号和⽂件标识符,⽤于显⽰调试信息:错误或警告的位置
6. 保留 #pragma 编译器指令。设定编译器状态;指⽰编译器完成⼀些特定的动作
2.编译——⽣成汇编代码⽂件 .s
对预处理后的⽂件进⾏语法分析,词法分析,语义分析,符号汇总,然后⽣成 .s ⽂件,得到的是汇编代码。
3.汇编——⽣成⼆进制⽬标⽂件 .o
将汇编代码转成⼆进制⽂件。另外,会形成符号表,给这些符号分配虚拟地址。
企业变更注册地址4.链接——⽣成默认 a.out
把⼆进制⽂件链接成⼀个可执⾏的指令
叶贝文链接所完成的任务是合并段表,然后把符号表合并并且对符号表进⾏重定位。
天气潮湿所谓合并段表,源代码编译⽣成的 a.out 会包含很多段,数据段,⽂本段,bss段等,编译过程中,不同的数据会对应到不同的段中,在 .o ⽂件中就已经有了分段
所谓符号表合并和重定位是说最后只有⼀个符号表,这个符号表是由前⾯汇编形成的多个符号表进⾏合并。在这⾥不在同⼀个符号表的符号,要对他们进⾏重定位。
>猜谜语
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论