JavaScript is required to for searching.
跳过导航链接
退出打印视图
链接程序和库指南     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  Oracle Solaris 链接编辑器介绍

2.  链接编辑器

3.  运行时链接程序

4.  共享目标文件

5.  应用程序二进制接口与版本控制

6.  支持接口

7.  目标文件格式

8.  线程局部存储

9.  Mapfile

A.  链接编辑器快速参考

B.  版本控制快速参考

C.  使用动态字符串标记建立依赖性

D.  直接绑定

观察符号绑定

启用直接绑定

使用 -B direct 选项

使用 -z direct 选项

使用 DIRECT mapfile 关键字

直接绑定和插入

本地化符号实例

删除多次定义的同名符号

定义显式插入

阻止直接绑定到某个符号

使用 -B nodirect 选项

使用 NODIRECT mapfile 关键字

E.  System V 发行版 4(版本 1)Mapfile

F.  链接程序和库的更新及新增功能

索引

附录 D

直接绑定

在基于动态可执行文件和许多依赖项构造进程的过程中,运行时链接程序必须将符号引用绑定到符号定义。缺省情况下,符号定义是通过简单搜索模型搜索的。通常,将搜索每个目标文件(从动态可执行文件开始),并按装入目标文件的顺序处理每个依赖项。自首次引入动态链接后一直在使用此模型。此简单模型通常会导致所有的符号引用被绑定到一个定义。绑定的定义是在已装入的依赖项系列中找到的第一个定义。

动态可执行文件已发展为更复杂的进程,其复杂程度远高于在动态链接尚处于起步阶段时所开发的可执行文件。依赖项的数目已从几十增长到了几百。动态目标文件之间引用的符号接口的数目也有了大幅增长。符号名称的大小也随着用来支持语言(例如 C++)的技术(例如名称重整)有了显著增长。由于符号引用被绑定到符号定义,因此对于许多应用程序来说,这些因素导致启动时间增加。

进程内符号数目的增加还导致了名称空间污染的增加。多个符号实例具有相同的名称正变得越来越常见。由具有相同符号的多个实例产生的意外的错误绑定经常导致难以对进程故障进行诊断。

此外,现有的进程的各个目标文件需要绑定到多次定义的同名符号的不同实例。

为解决缺省搜索模型的开销问题,同时提供更大的符号绑定灵活性,已创建了一个替代的符号搜索模型。该模型称为直接绑定

使用直接绑定,可以在进程的目标文件之间建立准确的绑定关系。通过杜绝关联目标文件的意外绑定,直接绑定关系可以帮助避免任何意外的名称空间冲突。这一保护机制增加了进程内目标文件的可靠性,有助于避免意外的难以诊断的绑定情况。

直接绑定可以影响插入。使用直接绑定可以避免意外插入。不过,直接绑定可以禁用有意插入。

本章介绍了直接绑定模型,并讨论了转换目标文件以使用该模型时应考虑的插入问题。