Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: stima от Июль 02, 2013, 17:42



Название: linker error на шаред библиотеки от других шаред библиотек
Отправлено: stima от Июль 02, 2013, 17:42
собственно есть приложение, которое использует динамическую библиотеку, которая в свою очередь используют другие динамические библиотеки если я в *.pro файле пишу такую линковку:
LIBS += -L$$LIB_PATH \
         -lбиблиотека _которая_требует_библиотеку

Выдает анрезолвед референсы и варнинги что типо не может найти библиотеки нужные для этой.
Если же:
LIBS += -L$$LIB_PATH\
       -lбиблиотека_которая_требуеться\
       -lбиблиотека _которая_требует_библиотеку
То линкер говорит что не может найти "библиотека_которая_требуеться" хотя они лежат в одной папке.

я пробывал указать LD_LIBRARY_PATH = $$LIB_PATH но так не катит

Да забыл добавить "библиотека_которая_требуеться" лижит симлинками, если это как-то играет роль, т.е. в одной папке;
библиотека_которая_требуеться.so -> библиотека_которая_требуеться.so.1
библиотека_которая_требуеться.so.1->библиотека_которая_требуеться.so.111


Название: Re: linker error на шаред библиотеки от других шаред библиотек
Отправлено: stima от Июль 02, 2013, 18:21
Нашел решение нужно использовать -rpath-link.


Название: Re: linker error на шаред библиотеки от других шаред библиотек
Отправлено: Alex Custov от Июль 03, 2013, 01:22
LD_LIBRARY_PATH никакого отношения к линковке не имеет. Линкер ищет библиотеки по путям, настроенным в ld.so.conf, соответственно, чтобы линковка всегда проходила успешно, библиотеки нужно делать что-то одно из: а) держать в этих каталогах б) дописывать свои пути поиска с помощью ключа линкеру -L <путь> в) использовать -rpath.