了解我们写的代码是如何转变成可执行文件.exe的是很有必要的,我们将这些底层的东西掌握清楚才能打好基础,筑高楼。
编译链接的全流程
我们平时写代码的文件是.c或者.cpp文件。这里面包括我们的代码,还有宏定义,引用头文件以及注释等。
预处理
当我们编译的时候,我们的编译器首先要预处理。将头文件(官方的和自己写的)的代码转到工程文件里面去,也就是将所有涉及的代码全部塞到一个文件中没有头文件的包含;还有将宏定义的东西全部替换;最后将注释全部去掉。这样的到的代码就是我们预处理的.i文件。
我们将vs里面的预处理文件选择是,然后以我这个代码为例
发现就只有main函数和stdio里面的代码。
编译
编译过程就是将预处理后的文件进行一系列的:词法分析、语法分析、语义分析及优化,生成相应的
汇编代码文件。
汇编代码我们可以打开调试来看,按下F10或者F11:
就可以看到汇编代码。
这个过程就是检查语法,形成汇编代码。
后缀为.o
汇编
将汇编代码转成二进制文件
链接
完成文件中各种调用的函数以及库的连接,并将它们一起打包合并形成可执行文件。最后形成.exe文件