天星
读完需要
4分钟速读仅需 2 分钟
分段本身就是一个比较复杂的内容,值得再专门写一遍文章介绍,本文再前文基础上再谈应用程序的分段
1
ELF 文件
旧文讲过 ELF 文件结构大致如下图:
我们知道 ELF 文件包含三种类型:可重定位文件(*.o)、可执行文件、以及共享库(share library)。
三种文件格式从结构上来说基本一致,只是具体到每一个结构不同。
代码段(.text)是可执行指令的集合;数据段(.data)和 BSS 段(.bss)是数据的集合,其中.data 表示已经初始化的数据,.bss 表示未初始化的数据。
从可执行程序的角度来说,如果一个数据未被初始化,就不需要为其分配空间,所以.data 和.bss 的区别就是 .bss 并不占用可执行文件的大小,仅仅记录需要用多少空间来存储这些未初始化的数据,而不分配实际空间。
2
应用程序的组成
2.1