然而,其实在main函数被调用之前,为了程序能够顺利执行,要先初始化进程执行环境,比如堆分配初始化( malloc、fre)、线程子系统等,关于main之前所执行的部分,我们将在本书的第4部分详细介绍。...当我们的程序与Glbc库链接在一起形成最终可执行文件以后,这个函数就是程序的初始化部分的入口,程序初始化部分完成一系列初始化过程之后,会调用main函数来执行程序的主体。...在main函数执行完成以后,返回到初始化部分,它进行一些清理工作,然后结束进程。...init该段里面保存的是可执行指令,它构成了进程的初始化代码。因此,当一个程序开始运行时,在main函数被调用之前,Gibc的初始化部分安排执行这个段的中的代码。
fini该段保存着进程终止代码指令。...以上的情况对于系统中已经存在的静态库或动态库须要被多个应用程序使用的情况也几乎相同,或者一个程序由多个公司或多个部门起开发,也有类似的问题。