C++链接与装载
1、.obj文件的内部结构
![](https://images2015.cnblogs.com/blog/785315/201509/785315-20150902194715966-1129040557.png)
2、映射到进程虚拟空间
![](https://images2015.cnblogs.com/blog/785315/201509/785315-20150902194716388-130055203.png)
3、链接的原理
C++ Code
1
2 3 4 5 6 7 8 9 |
1、未解决符号表:提供了所有在该编译单元里引用但是定义并不在本编译单元里的符号及其出现的地址。
2、导出符号表提供了本编译单元具有定义,并且愿意提供给其他编译单元使用的符号及其地址。 3、地址重定向表提供了本编译单元所有对自身地址的引用的记录。 4、段表决定ELF文件的段结构 1、决定各个目标文件在最终可执行文件里的位置。 2、访问所有目标文件的地址重定向表,对其中记录的地址进行重定向(即加上该编译 单元实际在可执行文件里的起始地址)。 3、遍历所有目标文件的未解决符号表,并且在所有的导出符号表里查找匹配的符号,并在未解决符号表中所记录的位置上 填写实际的地址 (也要加上拥有该符号定义的编译单元实际在可执行文件里的起始地址)。 |
4、个人见解
![](https://images2015.cnblogs.com/blog/785315/201509/785315-20150902194717560-115801176.jpg)