01
依赖打包概述
什么是依赖打包 · 为什么需要依赖打包 · 在Rootfs构建中的位置
概念入门
02
静态链接与动态链接
静态链接原理 · 动态链接原理 · 优缺点对比 · 嵌入式场景选择
链接原理
03
ldd命令详解
ldd工作原理 · 输出解读 · 常见问题排查 · 实战分析二进制依赖
调试ldd
04
手动收集依赖库
使用ldd+cp手动打包 · Shell脚本自动化 · 处理符号链接问题
脚本实战
05
chrpath与RPATH
什么是RPATH · chrpath工具使用 · 修改库搜索路径 · 实战案例
RPATH工具
06
patchelf工具
patchelf功能介绍 · 修改动态库依赖 · 修改RUNPATH · 修改解释器
ELF修补
07
ldconfig与缓存管理
ldconfig工作原理 · ld.so.conf配置 · 更新缓存 · Rootfs正确配置
缓存配置
08
strace追踪依赖加载
strace基本用法 · 过滤open系统调用 · 定位缺失库 · 实战启动失败
追踪调试
09
Busybox依赖分析
Busybox编译配置 · 依赖特点 · 静态编译 · 动态编译依赖处理
Busybox最小化
10
glibc依赖详解
核心库(libc.so.6, ld-linux) · NSS依赖 · locale · 时区数据依赖
glibc核心
11
musl libc依赖
musl与glibc区别 · 静态链接优势 · 构建最小Rootfs · 兼容性问题
musl轻量
12
交叉编译环境依赖
交叉编译工具链sysroot · 目标系统库路径 · --sysroot选项 · 处理依赖
交叉编译sysroot
13
Yocto/OpenEmbedded依赖管理
RDEPENDS, DEPENDS · 自动依赖解析 · 依赖树 · 自定义打包
Yocto构建
14
Buildroot依赖管理
包管理机制 · 依赖选择与配置 · 自动检测依赖 · 手动添加依赖
Buildroot配置
15
Debian/Ubuntu apt-get下载依赖
apt-get download · dpkg-deb解包 · 提取依赖库 · 离线依赖包
Debianapt
16
Alpine Linux apk依赖管理
apk工具使用 · 从apk包提取文件 · 处理musl依赖 · 轻量Rootfs
Alpineapk
17
Docker镜像依赖分析
docker history查看层 · docker inspect分析 · 提取Rootfs · 多阶段构建
Docker镜像
18
依赖冲突与版本管理
符号版本控制 · SONAME机制 · ldd版本依赖 · 解决冲突实战
冲突版本
19
最小化依赖原则
什么是最小化依赖 · 识别不必要依赖 · strip工具 · 删除调试符号
精简strip
20
依赖打包脚本编写
完整Shell脚本 · 处理递归依赖 · 生成依赖清单 · 自动化测试
脚本自动化
21
Python依赖打包
Python解释器依赖 · C扩展模块 · pip离线包 · 打包进Rootfs
Pythonpip
22
Perl依赖打包
Perl模块依赖 · CPAN离线安装 · 处理共享库依赖
PerlCPAN
23
OpenSSL与加密库依赖
libcrypto/libssl · 证书文件 · 硬件加速库 · 安全更新
OpenSSL加密
24
图形库依赖(X11/Wayland)
X11客户端库 · Wayland协议 · 字体文件 · GPU驱动依赖
图形X11
25
ALSA与音频库依赖
ALSA库 · PulseAudio · 音频编解码器 · 蓝牙音频依赖
音频ALSA
26
网络库依赖
libcurl · libpcap · libnl · SSL/TLS依赖链
网络libcurl
27
数据库客户端依赖
SQLite · MySQL/MariaDB客户端 · PostgreSQL客户端 · ODBC驱动
数据库客户端
28
依赖打包的测试与验证
chroot测试 · QEMU用户态模拟 · 完整性检查脚本 · 自动化测试
测试验证
29
依赖打包的性能优化
减少库加载时间 · prelink · 延迟加载 · 优化库搜索路径
性能优化
30
综合实战:构建完整Rootfs
需求分析 · 选择基础库 · 逐层打包依赖 · 测试调试 · 生成镜像
综合实战