感觉自己听网课的成果不是很好… °(°ˊДˋ°) °
ICS第一次作业,再听一遍理解一下
可重定位文件
需要gcc-g:.debug,.line,.strtab中的.debug符号表
.rodata:printf字符串、switch跳转表等
.bss:默认初始值未0,只是占位符,不占磁盘空间,占内存空间,在节头表中指明长度
.rel.data:.data节的重定位信息,用于重定位时修改
.rel.data:.text节的重定位信息,用于重定位时修改
节头部表:记录每个节的节名、偏移和大小
可执行目标文件
还多了一个.init!!不要漏啦!
可重定位vs可执行
先写两个文件~
生成.o文件并链接:
查看可执行文件的ELF头
查看可重定位文件的ELF头
注意到节头部表大小相同,表项数量不同,来看一下:
可重定位目标文件节头部表
12项,和前面描述的一样
可执行目标文件节头部表
可以很明显的看到出现了:.init前一大堆的段头部表、.init