elf文件概述

linux可执行文件格式

编译器程序从C语言文件到预处理再汇编程序之后需要链接最后生成机器码(大多16位),

image-20240211205202440

链接库实现函数调用,否则将只是一个目标文件

可执行文件

狭义下指单纯的机器码数据的执行文件,如.out,.exe,.dll,.so

广义则指文件中的数据是可执行代码的文件:.out,.exe,.sh,.py

windows下的可执行文件统称pe:

.exe+.dll+.lib

linux下的可执行文件为elf:

.out+.so+.a

上述均为在磁盘中的文件

一旦开始执行,进入内存后将不满足可执行文件的定义

elf文件结构

image-20240211210434508

elf header

记录了整个elf文件的整体结构

program header table

记录了段视图的信息

code&data

不直接体现为code和data

包括机器码,按功能分为了一系列代码节