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

索引

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

共享目标文件可以有其自己的依赖项。运行时链接程序查找共享目标文件依赖项使用的搜索规则在运行时链接程序搜索的目录中介绍。如果共享目标文件没有位于其中一个缺省搜索目录中,则必须将查找位置明确告知运行时链接程序。对于 32 位目标文件,缺省搜索目录为 /lib/usr/lib。对于 64 位目标文件,缺省搜索目录为 /lib/64/usr/lib/64。指明非缺省搜索路径要求的首选机制是在具有依赖项的目标文件中记录运行路径。使用链接编辑器的 -R 选项可以记录 运行路径。

在以下示例中,共享目标文件 libfoo.so 依赖于 libbar.so;后者在运行时应位于目录 /home/me/lib 中,否则将位于缺省位置中。

$ cc -o libbar.so -G -K pic bar.c
$ cc -o libfoo.so -G -K pic foo.c -R/home/me/lib -L. -lbar
$ elfdump -d libfoo.so | egrep "NEEDED|RUNPATH"
       [1]  NEEDED        0x123         libbar.so.1
       [2]  RUNPATH       0x456         /home/me/lib

共享目标文件负责指定查找其依赖项所需的所有运行路径。所有在动态可执行文件中指定的运行路径只用于查找动态可执行文件的依赖项。不能使用这些运行路径来查找共享目标文件的任何依赖项。

LD_LIBRARY_PATH 系列的环境变量的作用域更具全局性。运行时链接程序使用借助此变量指定的所有路径名来搜索任意共享目标文件依赖项。虽然这些环境变量可用作影响运行时链接程序搜索路径的临时机制,但是强烈建议不要在生产软件中使用这些环境变量。有关更全面的介绍,请参见运行时链接程序搜索的目录