c++源文件从文本阶段到可执行文件的过程

过程分为个阶段:

          预处理阶段····>编译阶段····>汇编阶段····>链接阶段

1)预处理阶段对源代码文件中的文件包含关系、预编译语句(宏定义)进行分析和替换,生成预编译文件。

 ····删除所有的#define,展开所有的宏定义

 ····处理所有的条件预编译语句#if、#else、#end if等

 ····处理所有的 “#include” 预编译指令 ,将文件内容替换到他的位置,这个过程是递归进行的。

 ····删除所有的注释 //

 ····保留所有的#pragma 编译器指令,如#pragma once是为了防止头文件互相引用

 ····添加行号和文件标识,便于编译器在编译时产生的错误能够显示出来

2)编译阶段对预编译文件进行编译,转为汇编代码,生成汇编文件。

 ····词法分析

 ····语法分析

 ····语义分析

 ····优化,比如 int a[1] = 0; int a[1] = 2; int a[1] = 3; 编译器会优化,认为只有一个int a[1] = 3;

 ····目标代码生成,生成汇编代码

 ····目标代码优化,对汇编代码进行优化,使用合适的寻址方式,使用位运算来代替乘法

3)汇编阶段将汇编文件转换为特定的机器指令,生成可重定位文件。

····将汇编指令翻译为机器码,生成 .o(windows)或者 .obj(linux)文件。

4)链接阶段将所有的可重定位文件和库进行链接,最终生成可执行文件。这里的链接位静态链接

原文链接: https://www.cnblogs.com/matthew-memorys/p/12458208.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c++源文件从文本阶段到可执行文件的过程

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/334536

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午9:42
下一篇 2023年3月1日 下午9:43

相关推荐