Solaris(64 位)开发者指南

$ORIGIN 关键字

分发和管理应用程序的一种常用方法就是将相关的应用程序和库放入一个简单的目录分层结构中。 通常,应用程序使用的库驻留在 lib 子目录中,而应用程序本身则驻留在基目录的 bin 子目录中。 该基目录随后可以使用 NFSTM(Sun 的分布式计算文件系统)导出并挂载到客户机上。 在某些环境中,自动挂载程序和名称服务可用来分发应用程序,并可确保应用程序分层结构的文件系统名称空间在所有客户机上都相同。 在此类环境中,可以在生成应用程序时,使用链接程序的 -R 标志来指定在运行时应当在其中搜索共享库的目录的绝对路径名。

但是在其他环境中,文件系统名称空间的控制并不是很好,并且开发者已转向使用调试工具(LD_LIBRARY_PATH 环境变量)来在包装脚本中指定库搜索路径。这是不必要的,因为可以在路径名(在链接程序的 -R 选项中指定)中使用 $ORIGIN 关键字。 $ORIGIN 关键字在运行时会扩展为可执行文件本身所在目录的名称。 实际上,这意味着可以使用相对于 $ORIGIN 的路径名来指定库目录的路径名。 这允许在完全未设置 LD_LIBRARY_PATH 的情况下重新定位应用程序的基目录。

此功能对于 32 位和 64 位应用程序均可用,并且需要考虑何时创建新的应用程序,以减少正确配置 LD_LIBRARY_PATH 时用户或脚本的依赖项。

有关更多详细信息,请参见《链接程序和库指南》