Documentation Home
> 链接程序和库指南
链接程序和库指南
Book Information
索引
数字和符号
A
C
D
E
F
G
L
M
N
P
R
S
T
U
安
版
绑
编
标
插
程
初
错
调
动
段
多
符
辅
共
归
过
环
换
基
接
节
解
静
局
可
库
链
名
命
目
全
软
弱
生
输
数
搜
未
线
性
虚
延
演
依
应
与
预
运
暂
支
直
重
前言
第 1 章 Solaris 链接程序介绍
链接编辑
静态可执行文件
运行时链接
相关主题
动态链接
应用程序二进制接口
32 位环境和 64 位环境
环境变量
支持工具
第 2 章 链接编辑器
调用链接编辑器
直接调用
使用编译器驱动程序
指定链接编辑器选项
输入文件处理
归档处理
共享库处理
与其他库链接
库命名约定
同时链接共享库和归档
命令行中归档的位置
链接编辑器搜索的目录
使用命令行选项
使用环境变量
运行时链接程序搜索的目录
初始化和终止节
符号处理
符号解析
简单解析
复杂解析
致命解析
未定义符号
生成可执行的输出文件
生成共享库输出文件
弱符号
输出文件中暂定符号的顺序
定义其他符号
定义符号引用
定义绝对符号
定义暂定符号
扩充符号定义
缩减符号范围
删除符号
外部绑定
字符串表压缩
生成输出文件
标识硬件和软件功能
标识硬件功能
标识软件功能
重定位处理
位移重定位
调试帮助
第 3 章 运行时链接程序
共享库依赖项
查找共享库依赖项
运行时链接程序搜索的目录
配置缺省搜索路径
动态字符串标记
重定位处理
重定位符号查找
缺省符号查找
插入
直接绑定
执行重定位的时间
重定位错误
装入其他目标文件
延迟装入动态依赖项
提供 dlopen() 的替代项
初始化和终止例程
初始化和终止顺序
安全性
运行时链接编程接口
装入其他目标文件
重定位处理
符号查找
缺省符号查找模型
定义全局目标文件
隔离组
目标文件分层结构
获取新符号
测试功能
使用插入
调试帮助
调试库
调试器模块
第 4 章 共享库
命名约定
记录共享库名称
在归档文件中包含共享库
已记录名称冲突
具有依赖项的共享库
依赖项排序
作为过滤器的共享库
生成标准过滤器
生成辅助过滤器
过滤组合
filtee 处理
性能注意事项
分析文件
基础系统
延迟装入动态依赖项
与位置无关的代码
SPARC: -K pic 和 -K PIC 选项
删除未使用的材料
最大化可共享性
将只读数据移动到文本中
折叠多重定义数据
使用自动变量
动态分配缓冲区
最小化换页活动
重定位
符号查找
何时执行重定位
组合重定位节
复制重定位
使用 -B symbolic
配置共享库
第 5 章 应用程序二进制接口与版本控制
接口兼容性
内部版本控制
创建版本定义
创建弱版本定义 (weak version definition)
定义不相关接口
绑定到版本定义
检验附加目标文件中的版本
指定版本绑定
到其他版本定义的绑定
版本稳定性
可重定位目标文件
外部版本控制
协调版本化文件名
第 6 章 支持接口
链接编辑器支持接口
调用支持接口
32 位环境和 64 位环境
支持接口函数
支持接口示例
运行时链接程序审计接口
建立名称空间
创建审计库
调用审计接口
记录局部审计程序
审计接口函数
审计接口示例
审计接口演示
审计接口限制
直接检查栈的函数
运行时链接程序调试器接口
控制进程和目标进程之间的交互
调试器接口代理
调试器导出接口
代理处理接口
错误处理
扫描可装入目标文件
事件通知
跳过过程链接表
动态库填充
调试器导入接口
第 7 章 目标文件格式
文件格式
数据表示形式
ELF 头
ELF 标识
数据编码
节
特殊节
COMDAT 节
组节
硬件和软件功能节
散列表节
移动节
注释节
重定位节
重定位类型(特定于处理器)
SPARC: 重定位类型
64 位 SPARC: 重定位类型
32 位 x86: 重定位类型
x64: 重定位类型
字符串表节
符号表节
符号值
寄存器符号
Syminfo 表节
版本控制节
版本定义节
版本符号节
版本依赖性节
动态链接
程序头
基本地址
段权限
段内容
程序装入(特定于处理器)
程序的解释程序
运行时链接程序
动态节
全局偏移表(特定于处理器)
过程链接表(特定于处理器)
32 位 SPARC: 过程链接表
64 位 SPARC: 过程链接表
32 位 x86: 过程链接表
x64: 过程链接表
第 8 章 线程局部存储
C/C++ 编程接口
线程局部存储节
线程局部存储的运行时分配
程序启动
创建线程
启动后动态装入
延迟分配线程局部存储块
线程局部存储的访问模型
SPARC: 访问线程局部变量
SPARC: 常规动态 (General Dynamic, GD)
SPARC: 局部动态 (Local Dynamic, LD)
32 位 SPARC: 初始可执行 (Initial Executable, IE)
64 位 SPARC: 初始可执行 (Initial Executable, IE)
SPARC: 局部可执行 (Local Executable, LE)
SPARC: 线程局部存储的重定位类型
32 位 x86: 访问线程局部变量
32 位 x86: 常规动态 (General Dynamic, GD)
x86: 局部动态 (Local Dynamic, LD)
32 位 x86: 初始可执行 (Initial Executable, IE)
32 位 x86: 局部可执行 (Local Executable, LE)
32 位 x86: 线程局部存储的重定位类型
x64: 访问线程局部变量
x64: 常规动态 (General Dynamic, GD)
x64: 局部动态 (Local Dynamic, LD)
x64: 初始可执行 (Initial Executable, IE)
x64: 局部可执行 (Local Executable, LE)
x64: 线程局部存储的重定位类型
第 9 章 Mapfile 选项
Mapfile 结构和语法
段声明
映射指令
段内节的排序
大小符号声明
文件控制指令
映射示例
Mapfile 缺省选项
内部映射结构
附录 A 链接编辑器快速参考
静态模式
创建可重定位目标文件
创建静态可执行文件
动态模式
创建共享库
创建动态可执行文件
附录 B 版本控制快速参考
命名约定
定义共享库的接口
共享库的版本控制
现有(非版本化)共享库的版本控制
更新版本化共享库
添加新符号
内部实现更改
新符号和内部实现更改
将符号迁移到标准接口
附录 C 使用动态字符串标记建立依赖性
特定于硬件功能的共享库
减少 filtee 搜索
特定于指令集的共享库
减少 filtee 搜索
特定于系统的共享库
查找关联的依赖项
非绑定产品之间的依赖性
安全
附录 D 链接程序和库的更新及新增功能
Solaris 10 1/06 发行版
Solaris 10 发行版
Solaris 9 9/04 发行版
Solaris 9 4/04 发行版
Solaris 9 12/03 发行版
Solaris 9 8/03 发行版
Solaris 9 12/02 发行版
Solaris 9 发行版
Solaris 8 07/01 发行版
Solaris 8 01/01 发行版
Solaris 8 10/00 发行版
Solaris 8 发行版
Solaris 7 发行版
Solaris 2.6 发行版
© 2010, Oracle Corporation and/or its affiliates