В каком порядке линкер обрабатывает библиотечные каталоги?

StackOverflow https://stackoverflow.com/questions/3865594

  •  28-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top