链接(对ELF文件操作)
ELF文件:
原图
链接过程:
1. 重定位:当单个ELF文件没有相对应的字符串虚拟空间时(如B的变量有A的全局变量),将该空间搁置,然后在另外的 ELF文件寻找并指向。
2. 合并:合并相同段,重新生成虚拟空间。
链接分类:
-
静态链接:自定义目标文件与库文件生成一个ELF文件,直接与程序源码目标文件链接。
-
动态链接:生成一个ELF文件,在装载时与自定义目标文件链接。
俩者优点:
-
静态链接:链接速度快。
-
动态链接:装载时防止自定义目标文件多次装载(一个程序包含多个自定义目标文件),减少物理内存浪费; 更新静态库文件可以只重新编译静态文件。