文档目录
链接、符号与 C++ 运行期初始化
目标:搞懂 C++ 程序从文本文件变成系统进程的必经之路。
-
3.1 强符号、弱符号与多重定义(ODR 规则)
- 为什么在头文件中写普通函数定义会引发链接错误(Multiple Definition)?
- 如何用
inline或static关键字化解全局符号冲突。
-
3.2 动态链接(.so / .dll)与静态链接(.a / .lib)
- 程序运行时是如何进行动态符号重定位的?虚函数在动态库边界上的表现。
- 位置无关代码(PIC)与全局偏移表(GOT)的工作原理。
-
3.3 全局变量的生命周期与静态初始化顺序灾难
- 为什么跨文件的全局静态对象初始化顺序不可控?如何利用"局部静态变量(Meyers Singleton)“实现编译器保证的、线程安全的延迟初始化?