ELF文件的链接和装载

ELF文件的链接和装载

ELF的全称是可执行可链接的格式

链接过程就是对于没有定义或者声明在外部的变量进行链接(简单的理解就是确定相关符号对应的虚拟内存位置)

符号表的symtab,对应的字符串可以在strtab找到

重要的头有3个ELF头(首部的固定字节长度), 程序表头(Program Table Header)一般紧邻ELF头后面,节表头(Section Header Table)

一般对于可执行文件仅仅借助程序表头就能想相关的段载入正确的地址
节头表由于索引各个不同的节,对于链接过程中,我们需要将各个编译的单元的不同的节merge起来,同时需要解析出一些变量和符号的地址(计算和安排符号在内存中的地址并不是容易的事,这是需要linker去做的)

ELF文件格式:

ELF Header:

loader实现:

原文地址:https://www.cnblogs.com/fridayfang/p/14754984.html