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