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规范”得到了这个
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.
解决方法
这是“一般”使用的术语.
>作为连接器(汇编器的输出)的输入给出的文件称为对象文件或可重定位文件.
>链接器生成一个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”文件,但它在很多方面非常相似.