我在术语上一点也不困惑。
作为链接器输入的文件称为对象文件。链接器生成一个图像文件,然后加载程序使用该文件作为输入。
我是从"MS PE & COFF规范“得到的
Q1.图像文件也称为Binary Image、Binary File或仅为Binary。对吗?
因此,根据上述术语,PE/ELF/COFF是图像文件的格式,而不是对象文件。对吗?但是http://www.sco.com/developers/gabi/latest/ch4.intro.html说
本章描述对象文件格式,称为ELF (可执行和链接格式)。对象文件有三种主要类型。
矛盾的是,他说对象文件和图像文件都是ELF格式&他根本没有区分对象文件和图像文件,而是通常将它们称为对象文件。这不对吗?
Q3.我知道PE是从COFF派生出来的。但是为什么微软的PE格式规范被命名为“和公共对象文件格式规范”。他们还支持COFF吗?如果他们,在哪个操作系统?我以为PE很久以前就完全取代了COFF了。
发布于 2010-02-03 22:25:19
我是行动组。每个人的答案都是部分答案。所以,我把所有其他的答案和我学到的东西结合起来,来完成这个答案。
这是“通用”使用的术语。
Object File或Relocatable File。Image file,然后加载程序将其用作输入。现在,Image file既可以是Executable file,也可以是Library file。这些“图书馆文件”有两种:1. Static Library (\*.lib files for windows. \*.a for linux)
2. Shared/Dynamic libraries : `DLL` ( \*.dll on windows) & `Shared Object file`( \*.so in Linux)
Binary File / Binary可以用来指ObjectFile或ImageFile。取决于上下文。这是一个非常笼统的术语。Module (我不确定Linux的家伙,但是windows的人称之为Modulehttp://www.gliffy.com/pubdoc/1978433/L.jpg alt文本http://www.gliffy.com/pubdoc/1978433/L.jpg
正如我所说的,这些都是“--通常是”使用的术语。对于“二进制文件”、“图像文件”或“对象文件”,没有严格的定义。
特别是,“对象文件”一词有时可能被用来指编译器输出的中间文件,以供链接器使用,但在另一上下文中,可能是指可执行文件。
特别是在不同的平台上,它们可能被用来指不同或相似的事物。即使在一个平台上讨论问题时,一个作者使用的术语也可能与另一个不同。
e_type;这个字段让我们知道该文件是一个对象文件(在ELF术语中是可重定位的),还是一个图像(可以是一个可执行文件,也可以是一个共享对象),或者其他什么东西(核心文件也是ELF文件)。我知道PE是从COFF衍生出来的。但是为什么微软的PE格式规范被命名为“和公共对象文件格式规范”。他们还支持COFF吗?如果他们,在哪个操作系统?我以为PE很久以前就完全取代了COFF了。
至于"PE“和"COFF",我记得微软使用"COFF”规范作为"PE“规范的起点,但根据他们的需要进行了扩展。严格地说,"PE“文件不是"COFF”文件,但在许多方面非常相似。
发布于 2010-01-31 06:44:47
对于“二进制文件”、“图像文件”或“对象文件”,没有严格的定义。
特别是,“对象文件”一词有时可能被用来指编译器输出的中间文件,以供链接器使用,但在另一上下文中,可能是指可执行文件。
特别是在不同的平台上,它们可能被用来指不同或相似的事物。即使在一个平台上讨论问题时,一个作者使用的术语也可能与另一个不同。
至于"PE“和"COFF",我记得微软使用"COFF”规范作为"PE“规范的起点,但根据他们的需要进行了扩展。严格地说,"PE“文件不是"COFF”文件,但在许多方面非常相似。
发布于 2010-01-31 07:01:37
gcc -c将在Linux系统上生成一个.o文件,这是一个精灵格式的对象文件。"ELF 32位LSB可重定位,Intel 80386,version 1 (SYSV)“是如何用文件命令在我的机器上描述.o文件的。
https://stackoverflow.com/questions/2170818
复制相似问题