В каком порядке линкер обрабатывает библиотечные каталоги?
Вопрос
Возможно, что в пути поиска во время компиляции существует более одного экземпляра библиотеки. В каком порядке ссылочные каталоги процесса включены в путь поиска? Обеспечение платформы - 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.
Пожалуйста, прочитайте больше об этом здесь.