ELF 文件的头是用于描述整个文件的。这个文件格式在内核中有定义,分别为 struct elf32_hdr 和 struct elf64_hdr。
来看一个一个的 section,我们也叫节。这里面的名字有点晦涩,不过你可以猜一下它们是干什么的。
这个编译好的二进制文件里面,应该是代码,还有一些全局变量、静态变量等等。没错,我们依次来看。
- .text:放编译好的二进制可执行代码
- .data:已经初始化好的全局变量
- .rodata:只读数据,例如字符串常量、const 的变量
- .bss:未初始化全局变量,运行时会置 0
- .symtab:符号表,记录的则是函数和变量
- .strtab:字符串表、字符串常量和变量名
此文章为10月Day21学习笔记,内容来源于极客时间《趣谈Linux操作系统》,推荐该课程。