ELF文件

发布于 2024-09-01  532 次阅读


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文件的作用概括

用于让操作系统正确地加载和执行程序。


踏上取经路,比抵达灵山更重要