JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 11.1 链接程序和库指南     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

第 1 部分使用链接编辑器和运行时链接程序

1.  Oracle Solaris 链接编辑器介绍

2.  链接编辑器

3.  运行时链接程序

4.  共享目标文件

第 2 部分快速参考

5.  链接编辑器快速参考

第 3 部分高级主题

6.  直接绑定

观察符号绑定

启用直接绑定

使用 -B direct 选项

使用 -z direct 选项

使用 DIRECT mapfile 关键字

直接绑定和插入

本地化符号实例

删除多次定义的同名符号

定义显式插入

阻止直接绑定到某个符号

使用 -B nodirect 选项

使用 NODIRECT mapfile 关键字

7.  生成目标文件以优化系统性能

8.  Mapfile

9.  接口和版本控制

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

11.  可扩展性机制

第 4 部分ELF 应用程序二进制接口

12.  目标文件格式

13.  程序装入和动态链接

14.  线程局部存储

第 5 部分附录

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

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

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?
第 6 章

直接绑定

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

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

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

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

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

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

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

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