C++ 编译链接过程总结

编译链接分为四个过程 :预编译、编译、汇编、链接

预编译 :  操作命令: gcc  -E main.c -o main.i      

1.将所有的#define删除,并把所有的宏进行文本替换 。

2.处理所有的预编译指令,例如:#if,#eif,#else,#endif;

3.处理#include预编译指令,将包含的头文件插入到预编译指令的位置(注意:头文件的展开是递归展开)

4.删除所有的注释。

5.添加行号和文件标识。

6.保留所有的#pragma编译指令

最后由源文件“.cpp/.c”生成“.i”文件  

编译:       操作命令: gcc -S main.i -o main.s

1.扫描代码进行词法分析,即将源代码文件的字符序列划分为一系列的记号。

2.进行语法分析,即将对产生的记号进行语法分析。

3.进行语义分析,即由语法阶段完成分析的并没有赋予表达式或者其他实际的意义。

4.源代码优化,目标代码生成,目标代码优化。

5.生成汇编代码。

6.汇总所有的符号。

最后由“.i”文件生成“.s”文件

汇编: 操作命令: gcc  -c  main.s  -o  main.o 

1.根据汇编指令和特定平台,把汇编指令翻译成二进制形式。

最后由“.s”文件生成“.o”文件

链接:操作命令: gcc  -o  main  main.o

1.合并各个段和符号表

2.进行符号解析

3.分配地址和空间

4.符号地址重定位

最后生成可执行文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值