1.定义
ELF(Executable and Linkable Format,可执行与可链接格式)是一种通用的文件格式,用于存储可执行文件、目标文件、共享库以及核心转储。在文件系统中,ELF文件包含程序的代码、数据和用于操作系统加载程序的元数据。
2.举例说明
对于一个最基础的c语言程序,如下:
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
-
编译过程:
使用
gcc
编译器将此程序编译为可执行文件,生成一个ELF格式的可执行文件。gcc -o hello hello.c
此时生成的
hello
文件就是一个ELF格式的可执行文件,存储在文件系统中。 -
ELF文件的结构:
- ELF Header:文件头,包含关于文件布局的元信息,如入口点、字节顺序、文件类型等。
- Program Header Table:定义程序在内存中的布局,包括可执行代码段和数据段等信息。
- Sections:包括
.text
(代码段)、.data
(初始化数据段)、.bss
(未初始化数据段)、.rodata
(只读数据段)等。 - Section Header Table:描述文件中的每个段,方便链接器和加载器使用。
-
文件用途:
当执行
./hello
时,操作系统的内核通过exec
系统调用会读取该ELF文件的头部和段表,将代码段、数据段等内容加载到内存中,并设置程序的入口点(即main()
函数的地址),然后开始执行该程序。
3.ELF文件的作用概括
用于让操作系统正确地加载和执行程序。
Comments | NOTHING