您的位置:首页 > 编程语言 > C语言/C++

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

2017-10-21 18:13 246 查看
[align=center] C/C++中预编译(预处理)、编译、汇编、链接[/align]
[align=center]
[/align]



[align=left][/align]
[align=left]
[/align]

一、[b]预编译[/b]
[b][b]读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理[/b][/b]
作用:处理关于 “#” 的指令
(1)删除#define,展开所有宏定义。例#define portnumber 3333
(2)处理条件预编译 #if, #ifdef, #if, #elif,#endif
(3)处理“#include”预编译指令,将包含的“.h”文件插入对应位置。
(4)删除所有注释/**/,//。

二、[b]编译[/b]
作用:
1.词法分析
2.语法分析
3.语义分析

[align=left]4.产生相应的汇编代码文件[/align]
[align=left]
[/align]

三、[b]
a309
汇编
[/b]
[b]将编译完的汇编代码文件翻译成机器指令,并生成可重定位目标程序的.o文件,该文件为二进制文件,字节编码是机器指令。[/b]
作用:汇编器是将汇编代码转变成可以执行的指令,生成目标文件。

[align=left]
[/align]

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

由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。
例如:某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);

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

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

 

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

[align=left]
[/align]
[align=left]
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: