一些后缀区分
现在PC平台流行的可执行文件格式(Executable),主要有以下两种格式(COFF(Common file format)格式的变种):
- Windows下的
PE
(Portable Executable) - Linux的
ELF
(Executable Linkable Format)
可执行文件后缀:
- Windows的
.exe
- Linux的
.out
或.o
(ELF可执行文件),没有后缀,linux一般可以自动识别文件类型,只要设了执行权限,有elf文件头,就可以看成可执行文件
动态链接库(DLL,Dynamic Linking Library)文件后缀:
- Windows的
.dll
- Linux的
.so
静态链接库(Static Linking Library)文件后缀:
- Windows的
.lib
- Linux的
.a
目标文件有3种类型:
- 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 (Linux的
*.o
文件 Windows的*.obj
文件) - 可执行文件(Executable File) 包含适合于执行的一个程序,此文件规定了 exec() 如何创建一个程序的进程映像。(比如
/bin/bash
文件;Windows的*.exe
) - 共享目标文件(Shared Object File) 包含可在两种上下文中链接的代码和数据。首先链接编辑器可以将它和其它可重定位文件和共享目标文件一起处理,生成另外一个目标文件。其次,动态链接器(Dynamic Linker)可能将它与某个可执行文件以及其它共享目标一起组合,创建进程映像。目标文件全部是程序的二进制表示,目的是直接在某种处理器上直接执行(Linux的
.so
,如/lib/ glibc-2.5.so;Windows的.dll
)