图3-1ELF之间关系
Linux的ELF文件包括.o文件,可执行文件,以及动态库,静态库,.o文件进一步加工可以变成.so动态库,可执行文件以及.o文件打包可以变成.a静态库
现在来分析对应.o里面的具体内容
有个模板函数
图3-2模板函数
这个函数是简单实现了打印对应整数功能,对这个函数进行编译得到对应的.o
gcc -m32 -c test.c
这个时候的.o叫做可重定向文件,不是可执行文件,现在先来分析一下这个可重定向文件的具体架构,晚点在进行分析其他类型,其他类型也属于ELF,结构上一样,只是由细微的不一样.
图3-3ELF文件架构
可以看到ELF文件主要由ELF头部以及ELF body组成,操作系统对于ELF关心的是里面的代码段以及数据段,(写完程序进行编译之后代码是放在代码段,数据是放在数据段的),因为代码段保存操作系统想要执行代码,数据段保存操作系统想要的数据,那么操作系统是怎样知道对应的段?
操作系统先找到ELF头部(这个在ELF文件的开头),然后依据头部信息,找到对应的段表描述符的位置,可以看到这个是在ELF_body里面,然后再通过描述符去找到对应段,看起来是不是很简单,就想你想找铜锣湾扛把子,先有