程 序 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
首先,我们需要了解,什么是可执行程序。可执行程序是一种可以被计算机识别的程序,是源代码经过预处理、编译、链接等步骤后形成的程序,大体关系如下图所示。
图1.c语言程序执行流程
C源程序头文件->预编译处理(cpp)->编译程序本身->优化程序->汇编程序->链接程序->可执行文件。这大概就是整个c语言程序变成最终可以运行的文件的流程,看起来还是比较复杂,实际情况可能更加复杂。
编译预处理:主要包括对宏定义指令、条件编译指令、头文件包含指令、特殊符号进行处理。
编译阶段:编译的工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将文件翻译成等价的中间代码表示或汇编代码。
汇编阶段:汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。