在计算机科学中,ELF是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。常用扩展名有o,so,elf,prx。分析ELF文件有助于理解一些重要的系统概念,例如程序的编译和链接,程序的加载和运行等。
核心转储是指: 操作系统在进程收到某些信号而终止时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。
ELF文件类型
- 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件。
- 可执行文件:用于生成进程映像,载入内存执行,例如编译好的可执行文件a.out。
- 共享目标文件:用于和其他共享目标文件或者可重定位文件一起生成elf目标文件或者和执行文件一起创建进程映像,例如lib*.so文件,是一种特殊的可重定位文件。
ELF文件作用
- 参与程序的编译和链接(可重定位文件),建立一个程序。编译器和链接器将把elf文件看作是节头表描述的节的集合,程序头表可选。
- 参与程序的执行(可执行文件),运行一个程序。加载器则将把elf文件看作是程序头表描述的段的集合,一个段可能包含多个节,节头表可选。
- 如果是共享文件,则两者都含有。
ELF文件组成部分
- ELF头(ELF header)
在程序的开始部位,作为引路表描述整个ELF的文件结构,