01
库的概念
什么是库?为什么需要库?静态库与动态库的核心区别。
基础核心
02
静态库原理
静态库的链接过程、目标文件打包、链接器如何解析符号。
原理链接
03
静态库创建
Linux下使用ar命令创建静态库、Windows下使用lib命令。
实践命令
04
静态库使用
编译时链接静态库、头文件与库文件的组织方式。
使用组织
05
静态库优缺点
启动速度快、部署简单、占用空间大、更新困难。
对比评估
06
动态库原理
动态库的加载机制、地址无关代码(PIC)、全局符号表。
原理PIC
07
动态库创建
Linux下使用gcc -shared创建.so、Windows下创建.dll。
实践编译
08
动态库使用
隐式链接与显式链接、LoadLibrary与dlopen。
API加载
09
动态库优缺点
节省内存、更新方便、加载速度慢、依赖地狱。
对比风险
10
符号可见性
控制导出符号、__declspec(dllexport)与__attribute__((visibility))。
导出跨平台
11
运行时查找
Linux的LD_LIBRARY_PATH、Windows的PATH、rpath与runpath。
环境配置
12
动态库版本管理
soname机制、版本号规范、向后兼容性。
版本兼容
13
静态库与动态库混合使用
混合链接的陷阱、符号冲突、重复定义。
高级陷阱
14
跨平台考量
Linux、Windows、macOS下的库差异与最佳实践。
跨平台指南
15
性能对比
启动时间、内存占用、执行效率的实测对比。
性能数据
16
大型项目实践
Google Test的库策略、Boost库的链接方式。
案例开源
17
调试与优化
调试符号的处理、strip与优化选项、库的profiling。
调试优化
18
安全考量
DLL劫持、库注入、代码签名与完整性校验。
安全防护
19
依赖管理
pkg-config、CMake的find_package、vcpkg与conan。
工具包管理
20
静态库的现代替代
头文件库、C++20模块对库的影响。
现代C++20
21
动态库的热更新
插件系统设计、动态加载与卸载、资源管理。
热更新插件
22
链接器脚本
控制链接过程、自定义段、内存布局优化。
链接脚本
23
库的ABI兼容性
C ABI与C++ ABI、名称修饰、异常传递。
ABI兼容
24
最小化库体积
死代码消除、链接时优化(LTO)、库裁剪技术。
体积LTO
25
嵌入式系统库策略
资源受限环境下的库选择、静态链接为主。
嵌入式策略
26
游戏开发中的库
引擎插件系统、热重载、资产库管理。
游戏热重载
27
开源项目分析
分析ffmpeg、OpenSSL、libcurl的库策略。
开源分析
28
库的测试策略
Mock库、测试桩、链接测试版本。
测试Mock
29
容器化环境
Docker中的库管理、多阶段构建、Alpine与glibc。
容器Docker
30
未来趋势
WebAssembly、静态链接的复兴、模块化系统。
趋势前沿