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

C语言代码的整个编译过程

2009-12-28 13:51 302 查看
1 源文件hello.c(文本)--à预处理器----àhello.i(文本)

预处理器:将#include 包含的文件内容插入该命令处,检查全文处理#define宏定义,处理条件编译命令 #if #endif 将不需要的code屏蔽掉,处理完毕后生成修改后的源代码hello.i.

2 hello.i(文本)----à编译器------àhello.s(汇编程序 文本)

编译器:词法分析语法分析,生成一条条的汇编语句如mov ax,bx,相当于是优化后的汇编语言的源文件。

3 hello.s(汇编文本)------à汇编器----àhello.o(目标文件 二进制)

汇编器:将汇编源文件翻译成对应的机器指令,而且还写入一些东西与机器指令打包成可重新定位目标程序格式的文件hello.o

4 hello.o(目标文件 二进制)----à连接器----àhello.exe(可执行目标文件 二进制)

连接器:比如说hello.o里调用了标准库里函数eg prinf ,连接器的工作就是找到prinf所在的目标文件xx.o或是xx.lib然后将该程序插入到我们的hello.o中,具体来说,其细节是什么,如何找到xx.o呢?是不是只并入用到的函数呢?

5关于hello.exe执行:在OS下运行程序时候,比如说我们double
click一个xx.exe的图标,先是OS调用它一个叫做Loader加载器的函数,它读取分析可执行文件中的相关信息后,将其代码和数据拷贝到
Memory中,然后进行一些操作后(?)将控制转移到这个程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: