高级C/C++编译技术(典藏版)
上QQ阅读APP看书,第一时间看更新

1.6 二进制文件、编译器、链接器与装载器的作用

在前面的章节中,我们弄清楚了程序运行过程中的内存映射。随之而来的一个重要问题就是:程序运行过程中的内存映射是如何在运行时创建的?我们会在本节针对这一问题进行简单的解释。

粗略地讲:

● 程序的二进制文件中包含了程序运行过程中的内存映射布局的细节。

● 链接器创建了二进制文件的整体框架。要实现这项功能,链接器要对编译器生成的二进制文件进行合并,然后向各个内存映射节填充信息(代码和数据等信息)。

● 进程内存映射的初始化建立工作是由程序装载器这一系统工具完成的。在最简单的情况下,装载器会打开二进制可执行文件,读取节的相关信息,然后将这些信息载入进程内存映射结构中。

所有现代操作系统都是按照这种角色分离的方式设计的。

需要注意的是,本节中的这些简单描述离完整描述还差得很远。读者应该将本节的内容作为针对后续详细讨论的一个简要介绍,我们会在后面继续深入讨论特定主题时,对有关二进制文件和进程加载方面的内容进行更加细致的讲解。