窗口 – 二进制文件(PE / COFF&ELF)格式和术语的说明

我在术语上很混乱.

A file that is given as input to the linker is called Object File.
The linker produces an Image file,which in turn is used as input by the loader.

我从“MS PE&COFF规范”得到了这个

Q1.图像文件也称为二进制图像,二进制文件或二进制.对?

Q2.因此,根据上述术语,PE / ELF / COFF是图像文件&不是对象文件.对?但http://www.sco.com/developers/gabi/latest/ch4.intro.html

This chapter describes the object file format,called ELF (Executable and Linking Format). There are three main types of object files.

  • A relocatable file holds code and data suitable for linking with other
    object files to create an executable
    or a shared object file.

  • An executable file holds a program suitable for execution; the
    file specifies how exec(BA_OS) creates
    a program’s process image.

  • A shared object file holds code and data suitable for linking in two
    contexts. First,the link editor [see
    ld(BA_OS)] processes the shared object
    file with other relocatable and shared
    object files to create another object
    file. Second,the dynamic linker
    combines it with an executable file
    and other shared objects to create a
    process image.

矛盾的是他说的是Object File&图像文件是ELF格式&他并不完全区分对象和对象图像文件,但通常将其引用为对象文件.是不是错了?

Q3.我知道PE是从COFF派生的.但为什么Microsoft规范的PE格式被命名为Microsoft Portable Executable“和通用对象文件格式规范”.他们是否仍然支持COFF?如果他们在哪个操作系统?我以为PE很早就完全取代了COFF.

解决方法

我是OP.每个人的答案都是部分答案.所以,我结合了所有其他的答案,我学到了完成答案.

这是“一般”使用的术语.

>作为连接器(汇编器的输出)的输入给出的文件称为对象文件或可重定位文件.
>链接器生成一个Image文件,该文件又被加载程序用作输入.现在,图像文件可以是可执行文件或库文件.这些“库文件”有两种:

>静态库(* .lib文件的Windows.* .a为linux)
>共享/动态库:DLL(* .dll在Windows上)&共享对象文件(* .so在Linux中)

>术语二进制文件/二进制文件可用于引用ObjectFile或ImageFile. Undestand取决于上下文.这是一个非常通用的术语.
>加载程序将图像文件加载到内存中.然后它被称为模块(我不知道Linux的家伙,但Windows家伙称之为模块

http://www.gliffy.com/pubdoc/1978433/L.jpg
alt text http://www.gliffy.com/pubdoc/1978433/L.jpg

正如我所说,这些都是“一般”用的术语.术语“二进制文件”,“图像文件”或“目标文件”没有严格的定义.

特别地,术语“目标文件”有时可能用于指示由编译器输出以供链接程序使用的中间文件,但在另一个上下文中可能意味着可执行文件.

特别是在不同的平台上,它们可能被用于指不同的或类似的东西.即使在单个平台上讨论问题,一位作家可能会使用这些术语与另一个不同.

> ObjectFile& ImageFile在Windows& linux中的ELF格式.
> ELF不仅是图像文件的格式,也是目标文件的格式.
>每个ELF文件以ELF头文件开头. ELF头的第二个字段是e_type;这个字段让我们知道文件是否是一个对象文件(也称为ELF语法中可重定位的),或一个图像(可以是可执行文件或共享对象)或其他内容(核心文件也是ELF文件).
>我不知道头文件中是否有任何一个区别于File文件的Object文件.需要检查.

I know that PE is derived from COFF.
But why does the Microsoft
specifications of PE format is named
Microsoft Portable Executable “and
Common Object File Format
Specification”. Do they still support
COFF? If they,in which OS? I thought
PE completely replaced COFF long ago.

就“PE”与“COFF”而言,我的回忆是微软使用“COFF”规范作为“PE”规范的出发点,但扩展了它们的需求.所以严格来说,一个“PE”文件不是一个“COFF”文件,但它在很多方面非常相似.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...