第八章:Linux共享库的组织
第八章:Linux共享库的组织
8.1 共享库的版本
共享库版本号
共享库版本号的组成:
- 主版本号
- 次版本号
- 发布号
示例代码:
1 | #include <stdio.h> |
编译命令:
1 | # 编译不同版本 |
符号版本化
符号版本化的实现:
- 定义版本脚本
- 标记符号版本
- 链接时指定版本
示例代码:
1 | #include <stdio.h> |
版本脚本:
1 | VERSION_1.0 { |
编译命令:
1 | # 编译带版本信息的共享库 |
8.2 共享库的命名
命名规则
共享库的命名规则:
- lib前缀
- 库名
- .so后缀
- 版本号
示例代码:
1 | #include <stdio.h> |
编译命令:
1 | # 编译共享库 |
搜索路径
共享库的搜索路径:
- LD_LIBRARY_PATH
- /etc/ld.so.conf
- /lib和/usr/lib
示例代码:
1 | #include <stdio.h> |
编译和运行命令:
1 | # 编译 |
8.3 共享库的安装
安装位置
共享库的安装位置:
- /usr/lib
- /usr/local/lib
- 自定义目录
示例代码:
1 | #include <stdio.h> |
安装命令:
1 | # 编译共享库 |
安装脚本
安装脚本的编写:
- 复制文件
- 创建符号链接
- 更新缓存
示例脚本:
1 | #!/bin/bash |
实践练习
- 版本管理实验
1 | # 创建不同版本的共享库 |
- 命名规则实验
1 | # 创建共享库 |
- 安装实验
1 | # 创建安装脚本 |
思考题
- 共享库版本号的作用是什么?
- 什么是符号版本化?它有什么作用?
- 共享库的命名规则是什么?
- 如何设置共享库的搜索路径?
- 如何正确安装共享库?
参考资料
- 《程序员的自我修养:链接、装载与库》
- 动态链接器文档
- ELF 文件格式规范
- GNU Binutils 文档
- System V ABI