Oracle® Solaris 11.2 链接程序和库指南

退出打印视图

更新时间: 2014 年 7 月
 
 

命名约定

链接编辑器和运行时链接程序都不会根据文件名解释文件。将检查所有文件以确定其 ELF 类型(请参见ELF 头)。链接编辑器使用此信息来推导文件的处理要求。但是,共享目标文件通常遵循两种命名约定之一,具体取决于这些目标文件是用作编译环境的一部分还是用作运行时环境的一部分。

用作编译环境的一部分时,共享目标文件由链接编辑器读取并处理。虽然可以在传递到链接编辑器的命令中通过显式文件名指定这些共享目标文件,但是通常使用 –l 选项来利用链接编辑器的库搜索功能。请参见共享目标文件处理

应该使用前缀 lib 和后缀 .so 来指定适用于此链接编辑器处理的共享目标文件。例如,/lib/libc.so 便是可用于编译环境的标准 C 库的共享目标文件。根据约定,64 位共享目标文件位于 lib 目录中名为 64 的子目录中。例如,/lib/libc.so.1 的对应 64 位名称是 /lib/64/libc.so.1

用作运行时环境的一部分时,共享目标文件由运行时链接程序读取和处理。要允许在一系列软件发行版中对共享目标文件的导出接口进行更改,可将共享目标文件作为版本化文件名提供。

版本化文件名通常采用 .so 后缀后跟版本号的形式。例如,/lib/libc.so.1 便是可用于运行时环境的第一版标准 C 库的共享目标文件。

如果从不打算在编译环境中使用共享目标文件,则可能会从共享目标文件名称中删除常规的 lib 前缀。仅用于 dlopen(3C) 的共享目标文件便是此类共享目标文件。仍然建议使用后缀 .so 来指示实际文件类型。此外,强烈建议使用版本号以便在一系列软件发行版中提供正确的共享目标文件绑定。Chapter 9, 接口和版本控制更详细地介绍了版本控制。


注 - dlopen(3C) 中使用的共享目标文件名称通常表示为不包含 "/" 的简单文件名。然后,运行时链接程序可以使用一组规则来查找实际文件。有关更多详细信息,请参见装入其他目标文件