ELF文件结构
含义:
从ELF定位为Linux平台文件格式,全称是(Executeable and Linkable Format) , 包含以下几种格式
- .o 目标文件
- .out 可执行文件
- .so 共享库
从作用来看,包含
- 执行:包含代码和数据
- 链接:包含不同单元不同地址内容的映射和重定位
- 组织:如何将各个section组织起来
普通的源文件要经过编译和链接
- 编译:检查函数声明即可
- 链接:检查函数具体实现
常见命令有:
- file:读取文件格式
- readelf:读取elf文件格式和内容
- objdump:读取elf内容
组织形式:
- section and segment
组成:
- elf header
- Program header
- section header
- 代码段 .text
- 数据段 .data .bss
- .rodata
-
- .comment
符号表:
- 描述文件中所有函数,字段,的位置大小作用域等
静态链接和动态链接
- 静态链接会将所有so库中的符号信息,统一到一起,地址给你统一算好,不需要重定位
- 动态链接,先给你个临时地址,等真正链接时再给你重定位算好
编译时会将所有段地址给出,再根据段内偏移,算出符号的地址,有地址可以查到内容