感觉自己听网课的成果不是很好… °(°ˊДˋ°) °
ICS第一次作业,再听一遍理解一下


可重定位文件

ICS:链接与ELF头

需要gcc-g.debug,.line,.strtab中的.debug符号表
.rodata:printf字符串、switch跳转表等
.bss:默认初始值未0,只是占位符,不占磁盘空间,占内存空间,在节头表中指明长度
.rel.data:.data节的重定位信息,用于重定位时修改
.rel.data:.text节的重定位信息,用于重定位时修改
节头部表:记录每个的节名、偏移和大小

可执行目标文件

ICS:链接与ELF头

还多了一个.init!!不要漏啦!


可重定位vs可执行

先写两个文件~
ICS:链接与ELF头
ICS:链接与ELF头

生成.o文件并链接
ICS:链接与ELF头

查看可执行文件的ELF头

ICS:链接与ELF头

查看可重定位文件的ELF头

ICS:链接与ELF头

注意到节头部表大小相同,表项数量不同,来看一下:

可重定位目标文件节头部表

ICS:链接与ELF头
12项,和前面描述的一样

可执行目标文件节头部表

ICS:链接与ELF头
ICS:链接与ELF头
ICS:链接与ELF头
可以很明显的看到出现了:.init前一大堆的段头部表.init

相关文章: