程序编译的链接过程
If you want to understand the concept of link, the first thing you should do is understanding the symbol.
Different cpp files will be compiled separately, we can call different cpp files different modules. If one module A use some variables or functions of an another module B, A should know the sysbol of these variables and functions.
We also know that different cpp files refer to different symbol tables, if we don't have linker, we ought to edit the A to correct the symbol of variables and functions of B, it is so complex. Linker can do this work for we, it is the meaning of linker. And what linker does is called relocation.
参考
- [1] 我需要知道:编译、链接、装载、运行
- [2] ELF文件分析指引
- [3] ELF文件分析指引2
- [4] 一文看懂静态链接
- [5] 一文看懂动态链接
- [6] 程序员的自我修养