ELF文件结构

含义:

从ELF定位为Linux平台文件格式,全称是(Executeable and Linkable Format) , 包含以下几种格式

  • .o 目标文件
  • .out 可执行文件
  • .so 共享库

从作用来看,包含

  • 执行:包含代码和数据
  • 链接:包含不同单元不同地址内容的映射和重定位
  • 组织:如何将各个section组织起来
    ELF文件结构

普通的源文件要经过编译和链接

  • 编译:检查函数声明即可
  • 链接:检查函数具体实现

常见命令有:

  • file:读取文件格式
  • readelf:读取elf文件格式和内容
  • objdump:读取elf内容

组织形式:

  • section and segment

组成:

  • elf header
  • Program header
  • section header
  • 代码段 .text
  • 数据段 .data .bss
  • .rodata
    • .comment

符号表:

  • 描述文件中所有函数,字段,的位置大小作用域等

静态链接和动态链接

  • 静态链接会将所有so库中的符号信息,统一到一起,地址给你统一算好,不需要重定位
  • 动态链接,先给你个临时地址,等真正链接时再给你重定位算好
    编译时会将所有段地址给出,再根据段内偏移,算出符号的地址,有地址可以查到内容