从程序员角度来看ELF文件
1 介绍 ELF文件是一种linux/unix上通用的可执行文件格式,其比a.out和COFF二进制格式有更多的灵活性和功能。 2 类型 三种类型: (1)可执行文件,包含代码和数据,指定了进程的地址空间分布; (2)可重定位文件,包含代码和数据,用于被其他的可重定位文件或者共享库文件链接使用; (3)共享库文件,包含代码和数据,在静态链接和动态链接时,被链接工具ld使用,动态链接库一般以.so结尾。 ELF文件最有用的地方在于其内部的section结构。 3 .init 和 .fini section介绍 3.1 概述 (1)ELF系统加载一个ELF文件到内存中,需要一些段的信息来构建该进程的虚拟地址空检结构的分布,一个段包括很多的section。 (2)一个ELF文件包括由section组成的数组,数组中有一些很重要的section需要被程序员理解:.fini section,该节中包括一个进程正常退出需要执行的代码;.init section,该节包括进程开始真正执行前需要执行的代码,即main函数之前。 当一个函数被放到.init section中的时候,那么该函数将会在main函数执行前被执行;当一个函数被放置到.fini sction中的时候,那么该函数将会在main函数返回后执行。 因此,构造函数和析构函数可以在这两个节中执行。 3.2 C+