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

文档信息

前言

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

1.  Oracle Solaris 链接编辑器介绍

2.  链接编辑器

3.  运行时链接程序

4.  共享目标文件

命名约定

记录共享目标文件名称

在归档中包含共享目标文件

已记录名称冲突

具有依赖项的共享目标文件

依赖项排序

作为过滤器的共享目标文件

生成标准过滤器

生成辅助过滤器

过滤组合

filtee 处理

性能注意事项

使用 elfdump 分析文件

底层系统

延迟装入动态依赖项

与位置无关的代码

SPARC: -K pic-K PIC 选项

删除未使用的材料

最大化可共享性

将只读数据移动到文本中

折叠多重定义数据

使用自动变量

动态分配缓冲区

最小化分页活动

重定位

符号查找

执行重定位的时间

组合重定位节

复制重定位

使用 -B symbolic 选项

配置共享目标文件

5.  接口和版本控制

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

第 2 部分快速参考

7.  链接编辑器快速参考

8.  版本控制快速参考

第 3 部分高级主题

9.  直接绑定

10.  Mapfile

11.  可扩展性机制

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

12.  目标文件格式

13.  程序装入和动态链接

14.  线程局部存储

第 5 部分附录

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

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

索引

依赖项排序

动态可执行文件和共享目标文件都依赖于相同的常用共享目标文件时,这些目标文件的处理顺序可能会变得更难以预测。

例如,假设共享目标文件开发者生成的 libfoo.so.1 具有以下依赖项:

$ ldd libfoo.so.1
        libA.so.1 =>     ./libA.so.1
        libB.so.1 =>     ./libB.so.1
        libC.so.1 =>     ./libC.so.1

如果使用此共享目标文件创建动态可执行文件 prog,并定义对 libC.so.1 的显式依赖项,则生成的共享目标文件顺序将如下:

$ cc -o prog main.c -R. -L. -lC -lfoo
$ ldd prog
        libC.so.1 =>     ./libC.so.1
        libfoo.so.1 =>   ./libfoo.so.1
        libA.so.1 =>     ./libA.so.1
        libB.so.1 =>     ./libB.so.1

动态可执行文件 prog 的构造将会影响对共享目标文件 libfoo.so.1 依赖项处理顺序的任何要求。

专门致力于符号插入和 .init 节处理的开发者应意识到共享目标文件处理顺序可能存在这种变化。