编译原理之--全局构造与析构

动态链接是把链接过程推迟到装载的时候,共享对象的最终装载地址在编译的时候时不确定的,它无法假设自己在进程虚拟空间中的位置。装载时,装载器根据当前地址空间的空闲情况,动态地分配一块足够大小的虚拟地址空间给相应的共享对象。
动态链接器装载所有共享对象时使用的广度优先,作为共享库,内核在装载它时会选择一个合适的的地址。
共享库的主版本号与次版本号决定了一个共享库的地址(看过一篇论文专门分析了libc版本号)
延迟绑定,函数在第一次被调用时进行绑定,
动态链接器本身就不可以依赖其他任何共享对象,动态连接器本身所需要的全局和静态变量的重定位工作由它本身完成。动态连接器自举:动态连接器启动时可以完成这项任务而同时又不能用到全局和静态变量。动态连接器的入口地址即为自举代码的入口。