C++

C++程序的实现过程

从C++的源文件经过编译、链接生成可执行文件全过程

Posted by jxb2018 on March 7, 2019

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

image

预处理

预处理过程主要处理那些源文件以”#”开始的预编译指令,具体讲,就是替换掉宏定义指令条件编译指令头文件包含指令。 在Ubuntu的demo文件夹下,编辑mathtool.h和test.cpp,然后在shell下运行命令g++ -E test.cpp -o test.ii,生成经过预处理之后的test.ii文件(.ii文件)。 image 从图中很容易看出来,预编译会对宏定义指令条件编译指令头文件包含指令进行替换。

编译

编译过程会对预处理完的文件进行一系列的词法分析语法分析语义分析以及产生相应的代码文件(.s)。

汇编

汇编实际上是指把汇编语言代码翻译成目标机器指令的过程,参照的是机器指令的对照表,最终得到的是目标文件。(Windows下是.obj文件,Linux下是.o文件)

链接

链接是一个复杂的过程,以后会单独讲这里。总的来说,链接就是将有关的目标文件彼此相连接,使之成为一个可以被操作系统装入执行的统一整体。Linux下,生成.out文件;在windows下生成.exe文件。