В каком порядке компоновщик обрабатывает каталоги библиотеки? - PullRequest
6 голосов
/ 05 октября 2010

Возможно, что во время компиляции в пути поиска будет несколько экземпляров библиотеки.В каком порядке каталоги процессов компоновщика будут включены в путь поиска?Платформа, о которой идет речь, - Sun OS.

1 Ответ

7 голосов
/ 05 октября 2010

Поиск в каталогах осуществляется в том порядке, в котором они указаны в командной строке. Каталоги, указанные в командной строке, ищутся перед каталогами по умолчанию. Все параметры -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 существует в среда, компоновщик времени выполнения будет искать каталоги, названные в нем, перед его каталогом по умолчанию, для общие объекты, которые будут связаны с программа при исполнении.

Пожалуйста, прочитайте больше об этом здесь .

...