第八章,从源文件到可执行文件。本章介绍了用c语言编译器来编写Windows用的可执行文件的示例。8.1节,计算机只能运行本地代码。任何编程语音编写的源代码都要翻译为本地代码才能被CPU解析运行。8.2节,本地代码的内容。本地代码的内容就是各种数值的罗列。8.3节,编译器负责转换源代码。编译器读入代码后经过语法解析、句法解析、语义解析生成本地代码。同样的源代码可以转换成使用于不同处理器的本地代码。交叉编译器能够生成和运行环境中CPU不同的CPU所使用的本地代码的。8.4节,仅靠翻译是无法得到可执行文件的。因为本地文件无法直接运行,可以运行的EXE文件编译之后还需要进行“链接”处理。链接指的是把多个目标文件结合生成一个EXE文件的处理,运行连接的程序就称为链接器。8.5节,启动及库文件。链接器指定库文件后就会从中把需要的目标文件抽掉出来,并同其他目标文件结合生成EXE文件。链接器出现错误信息,表示无法解析外部符号,而外部符号指其他目标文件中的变量或函数。sprintf()函数不是通过源代码形式,而是通过库文件形式和编译器一起提供的,这样的函数则称为标准函数。8.6节DLL文件及导入库。在Windows中,API的目标文件并不是存在通常的库文件中,而是储存在名为DLL文件的特殊文件库中。类似于import32.lib这样的库文件成为导入库。而静态链接库则与此相反,储存着目标文件的实体。最后通过图例清楚的显示出Windows中编译和链接机制。8.7节,可执行文件运行时的必要条件。EXE文件中给变量及函数分配了虚拟的内存地址,链接器会在文件开头追加转换内存地址所需的必要信息即再配置信息。8.8节,程序加载时会生成键和堆。EXE文件中并不存在栈及堆的组。栈和堆需要的内存空间是在文件加载到内存后开始运行时得到分配的。栈和堆的相似之处在于他们的内存空间都是在程序运行时得到申请分配的。
标签:文件,EXE,代码,程序,第八章,编译器,本地,链接,怎样 From: https://www.cnblogs.com/Du1209/p/18031186