ICS:链接与ELF头

感觉自己听网课的成果不是很好… °(°ˊДˋ°) °
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

猜你喜欢

转载自blog.csdn.net/Rachel_IS/article/details/104693824