ELF:用于二进制文件,可执行文件,目标代码,共享库,核心转储的标准文件格式。
目标文件发展历程:UNIX从最早的a.out(难以支撑共享库概念)->COFF(引入了段的概念)->ELF(更具扩展性和灵活性)
ELF文件类型:
-
可重定位的目标文件
即由汇编器汇编生成的.o文件,链接器将其作为目标文件作为输入 ,链接处理后,生成一个可执行的目标文件或者可被共享的对象文件(.so文件)。可被ar工具archive为.a静态库文件。ps 可重定位:将原有的逻辑地址空间定位到物理地址空间上。可重定位的具体介绍
-
可执行的目标文件
Linux中存在两种可执行文件,一种为可执行的脚本文件(Shell),还有一种为可执行的目标文件(bash shell程序,gdb,vi)。此类文件规定了如何利用exec()创建一个程序的进程映像。 -
可被共享的目标文件
动态库文件,即.so文件。动态库发挥作用过程中两个步骤:链接器将它和其它.o文件,.so文件作为输入,经链接处理后生成.so文件或者可执行的目标文件;在运行时,动态链接器拿它和一个可执行的目标文件一起另外.so文件一起处理,创建一个进程映像。
ELF的视图:
分为链接视图以及执行视图
链接视图:用于