array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 111string(0) "" int(1) int(10) int(70) int(8640000) string(13) "likecs_art_db" array(1) { ["query"]=> array(1) { ["match_all"]=> object(stdClass)#29 (0) { } } } array(1) { ["createtime.keyword"]=> array(1) { ["order"]=> string(4) "desc" } } int(10) int(0) int(8640000) array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 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库中的符号信息,统一到一起,地址给你统一算好,不需要重定位
  • 动态链接,先给你个临时地址,等真正链接时再给你重定位算好
    编译时会将所有段地址给出,再根据段内偏移,算出符号的地址,有地址可以查到内容

相关文章: