ELF文件

  • 段表

    • 保存ELF文件各段的基本属性的结构,记录包括段名,段长度,在文件中的偏移量以及读写权限和段的其他属性
  • 代码段

    • 程序源代码编译后的机器指令存放位置,在文件中占用一定大小,该区域通常为只读
  • 数据段(.data段)

    • 保存已经初始化了的全局静态变量和局部静态变量,在文件中占用一定大小
  • .bss段

    • 存放未初始化的全局变量和局部静态变量,在文件中不占大小(节省磁盘空间),程序运行前才会开辟空间,已经初始化的变量也可能因为编译器的优化而存放在该段(比如初始化值为0),该段大小(所有未初始化的变量总大小)记录在段表里,符号表里会记录各变量的位置
  • 符号表

    • 记录目标文件中所用到的所有符号(包括定义在目标文件中的全局符号,在本目标文件中引用的全局符号,段名,局部符号,行号信息等)

ELF为目标文件(linux下),未初始化的全局变量会保存在.bss段,而.bss段在ELF文件中并不占用大小。