第八章——从源文件到可执行文件
本章讲解的是源文件如何通过编译转换为可执行文件的。
首先计算机只能运行本地代码。用某种编程语言编写的程序就称为源代码,保存源代码的文件被称为源文件。源代码是无法直接运行的,因为CPU能直接解析和运行的不是源代码而是本地代码。本地代码的内容就是各种数值的罗列。编译器负责编译源代码,编译器首先读入代码的内容,然后再把源代码转换为本地代码。因为编译器也是程序的一种所以也需要运行环境。此外还有一种交叉编译器,它生成的是和运行环境中的CPU不同的CPU所使用的本地代码。但是仅靠编译器是无法得到可执行文件的,编译器转换源代码之后,会生成本地文件,但本地文件是无法直接运行的,还需要进行链接处理,因为编译后生成的不是EXE文件,而是扩展名为.obj的目标文件,把多个目标文件结合,生成一个EXE文件的处理就是链接,运行连接程序的就被称为链接器。接下来讲到了启动和库文件,库文件指的是把多个目标文件集合到一个文件的形式。链接时会出现无法解析的外部符号,这表示的是无法找到记述着目的函数和变量的目标文件。还讲到了标准函数。Windows中API的目标文件存储在DDL文件的特殊库文件中,并且提到了导入库和静态链接库两个相反的概念。EXE文件的内容分为再配置信息,变量组,函数组。当程序加载时还会生成两个组,就是栈和堆。