8.1 C语言编译系统 8.1.4目标文件的格式 目标文件格式随系统不同而不同 介绍Unix的ELF(Executable and Linkable Format)格式 Linux、System V Unix的后期版本、BSD Unix变体和Sun Solaris,.都使用Unix的ELF 格式
8 1. C语言编译系统 8.1.4 目标文件的格式 • 目标文件格式随系统不同而不同 • 介绍Unix的ELF(Executable and Linkable Executable and Linkable Format)格式 • Linux、System V Unix的后期版本、BSD Unix变体和Sun Solaris Sun Solaris,都使用Unix的ELF 格式
8.1 C语言编译系统 ELF头 0 ELF头 .text ·描述了字的大小 .rodata 产生此文件的系统的字 .data 节次序 .bss 目标文件的类型 节 .symtab 机器类型 .rel.text 节头表的位置、条目的 .rel.data 大小和数量 .debug .line 其他 .strtab 描述目标文 件的节 节头表
8 1. 1 C语言编译系统 头 ELF 头 0 ELF • 描述了字的大小 ELF 头 .text d t • 描述了字的大小 • 产生此文件的系统的字 节次序 .ro d a t a .data 节次序 • 目标文件的类型 .bss .symtab 节 • 机器类型 .symtab .rel.text rel data 节 • 节头表的位置、条目的 大小和数量 .rel .data .debug 大小和数量 • 其他 .line .strtab 描述目标文 节头表 件的节
8.1 C语言编译系统 ELF头 0 节头表 .text 描述目标文件中各节的 .rodata 位置和大小 .data ·处于目标文件的末尾 .bss 节 .symtab .rel.text .rel.data .debug .line 描述具标文 .strtab 件的节 节头表
8 1. C语言编译系统 ELF头 0 节头表 • 描述目标文件中各节的 ELF头 .text • 描述目标文件中各节的 d t 位置和大小 .rodata .data • 处于目标文件的末尾 .bss .symtab 节 .rel.text .rel data rel.data .debug .line .strtab 描述目标文 节头表 件的节
8.1 C语言编译系统 ELF头 0 .text节 .text 被编译程序的机器代码 .rodata rodata节 .data .bss 诸如printf语句中的格 .symtab 式串和switch语句的跳 节 .rel.text 转表等只读数据 .rel.data .data节 .debug 已初始化的全局变量 .line .strtab 描述目标文 件的节 节头表
8 1. C语言编译系统 ELF头 0 .text节 被编译程序的机器代码 ELF头 .text d t .rodata节 .rodata .data .rodata节 诸如printf语句中的格 式串和 语句的跳 .bss .symtab 式串和switch语句的跳 节 转表等只读数据 .symtab .rel.text rel data 节 转表等只读数据 .data节 .rel.data .debug 已初始化的全局变量 .line .strtab 描述目标文 节头表 件的节
8.1 C语言编译系统 ELF头 0 bss节(.comm节) .text 未初始化的全局变量 .rodata 在目标文件中不占实际 .data 的空间 .bss .symtab节 节 .symtab .rel.text 记录在该模块中定义和 .rel.data 引用的函数和全局变量 .debug 的信息的符号表 .line .strtab 描述目标文 件的节 节头表
8 1. C语言编译系统 ELF头 0 .bss节(.comm 节) 未初始化的全局变量 ELF头 .text d t 在目标文件中不占实际 .rodata 在目标文件中不占实际 .data 的空间 节 .bss .symtab .symtab节 节 记录在该模块中定义和 .symtab .rel.text rel data 节 记录在该模块中定义和 引用的函数和全局变量 .rel.data .debug 的信息的符号表 .line .strtab 描述目标文 节头表 件的节