关于Windows下C/C++的编译
文章目录
一、前提
在 C / C + + C/C++ C/C++编译器中,我们编译程序的过程主要分成以下四个阶段。
- 预处理
- 编译
- 汇编
- 链接
具体的实现过程是按照以下的方式来进行的。接下来我们以 c l a n g clang clang这个编译器为例,以及 t e s t . c p p test.cpp test.cpp这个文件为源文件完成对以上过程的理解。
(一)预处理
这一阶段的过程主要是对包含源代码的文本文件进行处理。主要的处理内容就是将在源文件中包含的头文件加载到文件中,替换宏定义等等。最终生成的文件是以 . i .i .i结尾的文本文件。
clang++ -E test.cpp -o test.i
(二)编译
这个阶段是将预处理得到的文件经由编译器变成汇编语言。汇编语言中的每一条语句都以一种标准的文本格式准确的描述一条地址机器指令。在这个阶段生成的文件才是机器相关的代码。这个阶段生成以 . s .s .s结尾的汇编文本文件。
clang++ -S test.i -o test.s
(三)汇编
这个阶段就是将上一步得到的汇编文件汇编成机器指令,从而把这些指令打包成为一种可重定向的目标程序格式。这个时候生成以 . o .o .o结尾的二进制文件。
clang++ -c test.s -o test.o
(四)链接
这个阶段主要是处理在文件中调用了系统库例如 c i n cin cin等函数,那么就需要将系统库中的 c i n . o cin.o cin.o合并到我们生成的 t e s t . o test.o test