【发布时间】:2011-01-11 08:46:20
【问题描述】:
我在术语上有点混乱。
作为链接器输入的文件称为对象文件。 链接器生成一个图像文件,然后加载器将其用作输入。
我从“MS PE & COFF 规范”中得到这个
Q1. 图像文件也称为Binary Image、Binary File 或简称Binary。对吧?
Q2. 所以,根据上述术语,PE/ELF/COFF 是 Image File 而不是 Object File 的格式。 对吗?但是http://www.sco.com/developers/gabi/latest/ch4.intro.html 说
本章介绍目标文件格式,称为 ELF(可执行和链接格式)。目标文件主要分为三种类型。
一个可重定位的文件包含适合与其他链接的代码和数据 目标文件以创建可执行文件 或共享对象文件。
可执行文件包含适合执行的程序;这 文件指定 exec(BA_OS) 如何创建 程序的进程映像。
一个共享对象文件包含适合链接成两部分的代码和数据 上下文。一、链接编辑器[见 ld(BA_OS)] 处理共享对象 与其他可重定位和共享的文件 对象文件以创建另一个对象 文件。二、动态链接器 将其与可执行文件结合起来 和其他共享对象创建一个 过程映像。
矛盾的是,他说目标文件和图像文件都是 ELF 格式,他根本没有区分目标文件和图像文件,而是通常将它们称为目标文件。是不是错了?
Q3.我知道PE来源于COFF。但是为什么微软的PE格式规范被命名为Microsoft Portable Executable“和通用对象文件格式规范”。他们还支持COFF吗?如果他们,在哪个操作系统中?很久以前我以为PE完全取代了COFF。
【问题讨论】:
-
在二读时,我不确定您的问题是什么 - 您是否询问 PE、COFF 和 ELF 之间的区别、链接/加载的工作方式以及地址的解析方式,还是别的什么?
-
我把我的问题分成了2个问题:
VA & RVA上的另一个问题是stackoverflow.com/questions/2170843/… -
@Michael Burr:1. 我对 PE/COFF 和 ELF 规范中使用的
object file和Image file的术语差异感到困惑。 2. 坚持上面提到的object file&Image file术语,object files是否也是 PE/COFF 格式(在 windows 上)和 ELF 格式(在 linux 上)? -
@Michael Burr:是你把答案贴出来删了吗?如果是您,请重新发布答案,因为它清楚地解决了我的第一部分查询。
-
@claws:我取消了我的答案。但仅供参考,我最初删除了它,因为它似乎主要是在重申您在问题中的信息,而不是回答它。
标签: windows linux assembly elf portable-executable