ELF文件
-
段表
- 保存ELF文件各段的基本属性的结构,记录包括段名,段长度,在文件中的偏移量以及读写权限和段的其他属性
-
代码段
- 程序源代码编译后的机器指令存放位置,在文件中占用一定大小,该区域通常为只读
-
数据段(.data段)
- 保存已经初始化了的全局静态变量和局部静态变量,在文件中占用一定大小
-
.bss段
- 存放未初始化的全局变量和局部静态变量,在文件中不占大小(节省磁盘空间),程序运行前才会开辟空间,已经初始化的变量也可能因为编译器的优化而存放在该段(比如初始化值为0),该段大小(所有未初始化的变量总大小)记录在段表里,符号表里会记录各变量的位置
-
符号表
- 记录目标文件中所用到的所有符号(包括定义在目标文件中的全局符号,在本目标文件中引用的全局符号,段名,局部符号,行号信息等)
问题:ELF是什么?其大小与程序中全局变量的是否初始化有什么关系
ELF为目标文件(linux下),未初始化的全局变量会保存在.bss段,而.bss段在ELF文件中并不占用大小。