когда я 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" находит этот путь? (программа также выполняет штраф)
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", если они еще не существуют.
Надеюсь это поможет.