第1章
链接基础回顾
编译与链接完整流程 · 静态库与动态库区别
预处理汇编链接
第2章
符号表与符号解析
符号表结构 · 强/弱符号 · 解析规则
符号GCC
第3章
多重定义冲突
多重定义原理 · GCC报错 · 定位重复定义
冲突诊断
第4章
同名函数冲突
不同库同名函数 · 链接器选择 · 避免策略
函数优先级
第5章
同名全局变量冲突
作用域冲突 · extern声明 · 实战排查
全局变量extern
第6章
静态库链接顺序问题
链接器处理顺序 · 未定义错误 · 解决策略
顺序静态库
第7章
动态库运行时加载
动态链接原理 · LD_LIBRARY_PATH · 符号查找
运行时dlopen
第8章
动态库版本冲突
SONAME机制 · 符号版本控制 · ABI兼容
版本ABI
第9章
符号隐藏与可见性
__attribute__((visibility)) · -fvisibility=hidden
可见性导出
第10章
弱符号与弱引用
__attribute__((weak)) · 回调注册 · 应用场景
弱符号weak
第11章
链接器脚本基础
LD脚本结构 · 内存布局 · 符号定位
脚本LD
第12章
链接器脚本高级
覆盖段 · 自定义段 · 动态链接器脚本
高级段
第13章
循环依赖问题
静态/动态库循环依赖 · 解决方案
依赖循环
第14章
C与C++混合链接
Name Mangling · extern "C" · 兼容性
C++mangling
第15章
不同编译器编译的库冲突
ABI差异 · 结构体对齐 · 异常兼容
编译器ABI
第16章
不同标准库版本冲突
glibc/libstdc++版本 · 常见错误修复
glibclibstdc++
第17章
静态库与动态库混合使用
同名库链接 · 优先级问题
混合优先级
第18章
动态库的延迟加载
dlopen/dlsym · 插件系统 · 符号查找
dlopen插件
第19章
RTLD_GLOBAL与RTLD_LOCAL
符号可见性控制 · 避免符号污染
dlopen可见性
第20章
链接时优化 (LTO)
LTO原理 · 库冲突关系 · 调试注意
LTO优化
第21章
CMake中的库管理
target_link_libraries · 接口库 · 传递依赖
CMake依赖
第22章
Makefile中的链接控制
链接顺序 · 库路径 · 条件链接
Makefile顺序
第23章
Bazel/Buck等现代构建工具
依赖图管理 · 冲突检测机制
Bazel构建
第24章
nm与objdump工具
查看符号表 · 分析库 · 定位冲突
nmobjdump
第25章
readelf与ldd工具
动态库依赖分析 · 运行时链接诊断
readelfldd
第26章
strace与ltrace
跟踪系统/库调用 · 运行时行为分析
straceltrace
第27章
大型项目实战案例一
游戏引擎中的库冲突 · 物理/渲染引擎
游戏引擎
第28章
大型项目实战案例二
嵌入式系统库冲突 · 交叉编译 · 空间受限
嵌入式交叉编译
第29章
大型项目实战案例三
微服务架构库冲突 · 多语言/多版本
微服务多语言
第30章
总结与最佳实践
预防策略 · 诊断流程 · 团队规范建议
最佳实践规范