前言
C语言作为编译型语言,用来向计算机发出二进制指令。从代码到二进制指令转变的过程也就是C语言的编译过程,这个过程分为四个阶段。
翻译环境
翻译环境分为两大部分:编译和链接
编译
编译过程中又分为三部分:预处理、编译、汇编
预处理
预处理处理的是头文件的展开/宏替换/去掉注释/条件编译
编译
编译阶段是将C语言代码翻译成汇编代码,在这个过程中会进行词法分析、语法分析、语义分析、符号汇总。
汇编
汇编过程是将汇编代码转换成为目标代码(二进制文件)
链接
静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。