01
库的概念
什么是库 · 库的分类(静态库与动态库)· 库的优缺点对比
基础入门
02
静态库原理
静态库的链接过程 · 静态库的生成(ar命令)· 使用(gcc -L -l)
编译ar
03
动态库原理
动态库的链接过程 · 生成(gcc -shared -fPIC)· 运行时加载
运行时PIC
04
实战:数学计算库
C语言实现静态库与动态库 · 头文件/源文件/编译脚本/测试程序
实战双模式
05
库的依赖与冲突
库依赖管理 · 符号冲突(同名函数)· 解决策略(命名空间/静态封装)
依赖符号
06
跨平台库开发
DLL vs SO · CMake管理库 · 条件编译处理平台差异
CMake跨平台
07
库的版本管理
版本号规范 (Major.Minor.Patch) · 符号版本控制 · ABI兼容性
版本ABI
08
库的调试与优化
nm/objdump查看符号 · ldd检查依赖 · strip瘦身 · gprof性能
调试优化
09
第三方库集成
pkg-config · vcpkg/conan · 实战集成cURL库
集成cURL
10
库的安全实践
防止库注入 · 符号隐藏(-fvisibility) · 代码签名 · 安全编译选项
安全隐藏
11
静态库的进阶
静态库合并(ar -M) · 瘦身(strip --strip-debug) · 加密
进阶ar
12
动态库的进阶
延迟加载(dlopen/dlsym) · 卸载(dlclose) · 全局符号表
dlopen动态
13
库的测试策略
单元测试(CUnit/Google Test) · Mock库 · 覆盖率(gcov/lcov)
测试覆盖率
14
库的文档生成
Doxygen生成API文档 · 注释规范 · 文档版本管理
文档Doxygen
15
库的发布流程
构建系统(Makefile/CMake) · CI(GitHub Actions) · 包管理(deb/rpm)
发布CI
16
库的国际化
字符编码(UTF-8 vs GBK) · 本地化资源 · gettext工具
i18n编码
17
库的异常处理
C语言错误码设计 · C++异常安全 · 异常与库边界
异常错误码
18
库的内存管理
分配器(jemalloc/tcmalloc) · 泄漏检测(Valgrind) · RAII
内存Valgrind
19
库的并发支持
线程安全 · 锁粒度 · 无锁数据结构 · 原子操作
并发原子
20
库的网络编程
封装Socket库 · HTTP客户端 · 异步I/O (epoll/select)
网络epoll
21
库的序列化
JSON库(cJSON/nlohmann) · Protobuf · 自定义二进制协议
序列化Protobuf
22
库的日志系统
日志级别 · 轮转 · 异步日志 · spdlog/log4cxx
日志spdlog
23
库的配置管理
配置文件解析(INI/JSON/YAML) · 环境变量覆盖 · 命令行参数
配置YAML
24
库的插件系统
动态加载插件 · 插件接口设计 · 生命周期管理
插件动态加载
25
库的测试桩
Mock对象 · Stub服务 · Fake实现 · 测试替身模式
Mock测试
26
库的性能基准
Google Benchmark · 性能回归测试 · 性能分析工具
基准性能
27
库的代码规范
命名规范 · clang-format · 静态分析(cppcheck)
规范静态分析
28
库的许可证管理
开源许可证(MIT/GPL/Apache) · 兼容性 · 版权声明
许可证开源
29
库的容器化
Docker镜像构建 · 多阶段构建 · 库的容器化部署
Docker容器
30
库的生态建设
社区贡献指南 · Issue模板 · PR流程 · 版本发布策略
社区贡献