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.  直接绑定

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

使用 elfdump 分析文件

底层系统

延迟装入动态依赖项

与位置无关的代码

-K pic-K PIC 选项

删除未使用的材料

删除未使用的节

删除未使用的文件

删除未使用的依赖项

最大化可共享性

将只读数据移动到文本中

折叠多重定义数据

使用自动变量

动态分配缓冲区

最小化分页活动

重定位

符号查找

执行重定位的时间

组合重定位节

复制重定位

使用 -B symbolic 选项

配置共享目标文件

8.  Mapfile

9.  接口和版本控制

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

11.  可扩展性机制

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

12.  目标文件格式

13.  程序装入和动态链接

14.  线程局部存储

第 5 部分附录

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

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

索引

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

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

删除未使用的材料

包含要生成的目标文件未使用的输入可重定位目标文件的函数和数据是一种浪费。这种不需要的材料会使目标文件过大,在运行时使用该目标文件时会导致额外开销。

引用未使用的共享目标文件依赖项也是一种浪费。特别是不存在延迟装入时,这些引用会导致在运行时不必要地装入和处理这些共享目标文件。

在链接编辑期间可以使用链接编辑器的调试选项 -D unused 诊断未使用的节、未使用的可重定位目标文件和未使用的共享目标文件依赖项。

使用 -z guidance 选项时还会诊断未使用的文件和依赖项。

应该从链接编辑中删除未使用的节、未使用的文件和未使用的依赖项。此删除可减少链接编辑的成本,减少使用要生成的目标文件的运行时成本。但是,如果删除这些项会产生问题,则可以使用 -z discard-unused 选项从要生成的目标文件中丢弃未使用的材料。

删除未使用的节

当三个条件为真时,确定不使用输入可重定位目标文件中的 ELF 节。

可以使用 -z discard-unused=sections 选项从链接编辑中丢弃未使用的节。

通过定义动态目标文件的外部接口可以改进链接编辑器诊断和丢弃节的功能。请参见第 9 章。通过定义接口,可以将未定义为此接口一部分的全局符号降级为局部符号。此时将未从其他目标文件引用的降级后符号明确标识为供丢弃的目标文件。

如果将单个函数和数据变量指定给其自己的节,则使用链接编辑器可以丢弃这些项。可以使用 -xF 编译器选项完善此节。

删除未使用的文件

如果由可重定位目标文件提供的所有可分配节都未使用,则会将输入可重定位目标文件判定为未使用的。

可以通过 -z guidance 选项诊断未使用的文件,也可以使用 -z discard-unused=files 选项从链接编辑中丢弃未使用的文件。

-z discard-unused 选项提供了对未使用的节和未使用的文件的独立控制以便支持 -z guidance 处理。通过 -z guidance,可以识别哪些文件被判定为未使用的。通常可以很容易地从链接编辑中删除未使用的文件。不过,通过 -z guidance 处理无法识别哪些节被判定为未使用的。未使用的节可能涉及更多分析和删除工作,可能会导致编译器操作超出您的控制。

组合使用 -z discard-unused=sections 选项和 -z guidance 选项,可自动删除未使用的节,同时为您识别未使用的文件以便从链接编辑中删除。

删除未使用的依赖项

显式的共享目标文件依赖项是指使用路径名或使用 -l 选项(更常用)在命令行定义的依赖项。显式依赖项包含可能由编译器驱动程序提供的依赖项,如 -lc。如果两个条件为真,则会判定显式依赖项是未使用的。

可以通过 -z guidance 选项诊断未使用的依赖项,并且可以使用 -z discard-unused=dependencies 选项从链接编辑中丢弃未使用的依赖项。

隐式依赖项是显式依赖项的依赖项。可以将隐式依赖项处理为链接编辑的一部分,以完成所有符号解析的关闭。此符号关闭确保要生成的目标文件是自包含的,不保留未引用的符号。

所有动态目标文件都应定义其需要的依赖项。缺省情况下,生成动态可执行文件时强制实现该要求,但仅当使用 -z defs 选项生成共享目标文件时才会强制实现。如果出现共享目标文件未定义目标文件需要的依赖项的不利情况,则有必要代表目标文件提供显式依赖项。此类依赖项称为补偿依赖项。系统性地使用 -z defs 选项可以消除对补偿依赖项的需求,以生成所有动态目标文件。

未定义其依赖项的的动态目标文件应该是正确的。但是,由于这些目标文件可能需要补偿依赖项以创建有效的进程,因此 -z discard-unused=dependencies 选项不会删除未使用的补偿依赖项。

-z ignore-z record 选项是可以与 -z discard-unused=dependencies 选项结合使用的位置选项。这些位置选项针对选定的目标文件有选择地打开和关闭丢弃功能。