C/C++中预编译(预处理)、编译、汇编、链接

本文详细介绍了C/C++编程过程中的四个关键步骤:预编译处理宏定义、条件指令,编译进行词法、语法和语义分析,汇编阶段将汇编代码转化为机器指令,以及链接阶段解决符号引用和库函数问题,最终生成可执行程序。
 C/C++中预编译(预处理)、编译、汇编、链接



一、预编译

读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理

作用:处理关于 “#” 的指令

1)删除#define,展开所有宏定义。例#define portnumber 3333

2)处理条件预编译 #if, #ifdef, #if, #elif,#endif

3)处理“#include”预编译指令,将包含的“.h”文件插入对应位置。

4)删除所有注释/**/,//。


二、编译

作用:

1.词法分析

2.语法分析

3.语义分析

4.产生相应的汇编代码文件

三、汇编

将编译完的汇编代码文件翻译成机器指令,并生成可重定位目标程序的.o文件,该文件为二进制文件,字节编码是机器指令。

作用:汇编器是将汇编代码转变成可以执行的指令,生成目标文件。


四、链接

通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。


由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。

例如:某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);

      在程序中可能调用了某个库文件中的函数;这些问题,都需要经链接程序的处理才能解决。

    链接程序的主要工作就是将有关的目标文件彼此相连接,也就是将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。

 

大致经过这几个步骤,一个完整的可执行程序产生了……





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值