6

在编译期间,搜索路径中可能存在多个库实例。链接器进程目录将按什么顺序包含在搜索路径中?有问题的平台是 Sun OS。

4

1 回答 1

7

目录按照在命令行中指定的顺序进行搜索。在默认目录之前搜索命令行上指定的目录。所有 -L 选项都适用于所有 -l 选项,无论选项出现的顺序如何。LD_LIBRARY_PATH 也可用于补充库搜索路径。目录搜索在包含匹配库的第一个目录处停止。

LD_LIBRARY_PATH 虽然很棘手:

LD_LIBRARY_PATH 

用于搜索使用 -l 选项指定的库的目录列表。多个目录用冒号分隔。在最一般的情况下,它将包含两个用分号分隔的目录列表:

dirlist1; dirlist2 

如果调用 ld 时出现任意数量的 -L,如下所示:

ld . . . -Lpath1 . . . -Lpathn . . .

那么搜索路径排序为:

         dirlist1 path1 . . . pathn dirlist2 LIBPATH

当目录列表不包含分号时,它被解释为 dirlist2。

LD_LIBRARY_PATH 还用于为运行时链接器指定库搜索目录。也就是说,如果环境中存在 LD_LIBRARY_PATH,则运行时链接器将在其默认目录之前搜索其中命名的目录,以查找要在执行时与程序链接的共享对象。

请在此处阅读更多信息。

于 2010-10-05T16:26:01.480 回答