ldd волшебным образом находит libQtCore

0

когда я LDD моя программа, я получаю эту линию среди других

libQtCore.so.4 => /Soft/fox_dev/Qt-4.7.4/lib/libQtCore.so.4

однако этот путь не находится ни в моем PATH, ни в моем LD_LIBRARY_PATH и не выполняется:

set | grep -i qt

Я обнаружил, что репозиторий "bin" находится только на моем пути

/Soft/fox_dev/Qt-4.7.4/bin/

Но нет никакой переменной окружения, установленной для пути к библиотекам QtCore.

Вопрос: как команда "ldd" находит этот путь? (программа также выполняет штраф)

  • 0
    Что-то в make-файле?
  • 0
    ну ничего особенного в файле make -L / path / to / libs -lQtCore
Показать ещё 1 комментарий
Теги:
qt

1 ответ

1
Лучший ответ

ldd фактически выполняет вашу программу с использованием трассировки нагрузки. В загрузчике (ld.so или ld-linux.so) используется кеш, созданный при запуске ldconfig после того, как один или несколько файлов.so установлены в каталоге. Вы можете найти необходимую информацию здесь. Есть несколько способов переопределить это, если вы хотите использовать другую установку Qt. Самый простой - это установить

export LD_LIBRARY_PATH=<my Qt libs location>:$LD_LIBRARY_PATH

в скрипте, а затем запустить оболочку типа

bash --posix  # avoid changing the LD_LIBRARY_PATH again by sourcing configuration file

Это запустит вашу программу только с выбранной вами установкой Qt, не затрагивая другие программы, установленные в вашей системе. Если вас это не волнует, вы можете добавить это в свой профиль оболочки или bashrc и т.д., В зависимости от используемой оболочки.

Еще одна вещь: если ваша программа загружается через ссылки, то есть libQtCore.so или libQtCore.so.5 и т.д., Вам также нужно будет создать эти ссылки в "моем каталоге Qt libs", если они еще не существуют.

Надеюсь это поможет.

  • 0
    спасибо ... это ответ на мой вопрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню