7.3 目标文件

目标文件与三种形式:

  • 可重定位目标文件。包含二进制代码和数据,其形式可以在编译时和其他可重定位目标文件合并起来,创建一个可执行目标文件
  • 可执行目标文件。包含二进制程序代码和数据,其形式可以被直接复制到内存并执行。
  • 共享目标文件。一种特殊类型的可重定位目标文件,可以在加载或者运行时被动态的加载进内存并链接。

    编译器和汇编器生成可重定位目标文件(包括共享目标文件)。链接器生成可执行目标文件。从技术上讲,一个目标模块(object module)就是一个字节序列,而一个目标文件(object file)就是一个以文件形式存放在磁盘中的目标模块。不过,我们会互换地使用这些术语。
    目标文件是按照特定的目标文件格式来组织的,各个系统的目标文件的格式都不相同。从贝尔实验室诞生的第一个Unix系统使用的是a.out格式(直到今天,可执行文件任然称为a.out文件)。Windows使用可移植可执行(Portable Executable, PE)格式。MacOS-X使用Mach-O格式。现代x86-64 Linux和Unix系统使用可执行可链接格式(Executable and Linkable Format, ELF)。

猜你喜欢

转载自blog.csdn.net/xiaohaopei/article/details/82353114
7.3