在编译期间,搜索路径中可能存在多个库实例。链接器进程目录将按什么顺序包含在搜索路径中?有问题的平台是 Sun OS。
问问题
3522 次
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 回答