编写的一个C程序(源程序),转换成可以在硬件上运行的程序(可执行程序),需要进行翻译环境和运行环境。翻译环境则包括两大过程编译和链接,经过编译和链接过程便可形成可执行程序。
一、编译(将文本形式的源代码翻译成计算机认识的机器语言)
编译又分为预处理器处理、编译、汇编。
1.预处理器处理
主要是进行文本操作,包括头文件的包含,#define定义的标识符替换,宏替换,注释删除,形成.i文件
2.编译
通过语法分析,词法分析,语义分析,符号汇总,翻译成等价的汇编代码,形成.s文件
3.汇编
将汇编代码翻译成二进制指令,从而得到目标文件,汇编过程还会形成符号表。最后形成.o文件
二、链接(主要将有关的目标文件彼此相互链接,从而成为一个整体)
进行合并段表;符号表的合并和符号表的重定位。
三、Linux下预处理、编译、汇编生成目标文件