一个编辑好的C++源程序(.cc、.cpp)文件,如果想要变为在机器下可运行的可执行文件(windows下是.exe文件,Linux下是.out文件),>通常要经过预处理、编译、汇编、链接、执行这几步。

预处理
预处理过程主要处理那些源文件以”#”开始的预编译指令,具体讲,就是替换掉宏定义指令、条件编译指令、头文件包含指令。
在Ubuntu的demo文件夹下,编辑mathtool.h和test.cpp,然后在shell下运行命令g++ -E test.cpp -o test.ii,生成经过预处理之后的test.ii文件(.ii文件)。
从图中很容易看出来,预编译会对宏定义指令、条件编译指令、头文件包含指令进行替换。
编译
编译过程会对预处理完的文件进行一系列的词法分析、语法分析、语义分析以及产生相应的代码文件(.s)。
汇编
汇编实际上是指把汇编语言代码翻译成目标机器指令的过程,参照的是机器指令的对照表,最终得到的是目标文件。(Windows下是.obj文件,Linux下是.o文件)
链接
链接是一个复杂的过程,以后会单独讲这里。总的来说,链接就是将有关的目标文件彼此相连接,使之成为一个可以被操作系统装入执行的统一整体。Linux下,生成.out文件;在windows下生成.exe文件。