Как я могу установить, где приложение QT находит модуль QT?
-
21-09-2019 - |
Вопрос
Я хотел бы включить libqtgui.so.4 libqtnetwork.so.4 и libqtcore.so.4 в том же каталоге, что и где находится мое приложение. Как я заставил бы QT это понять? y Цель состоит в том, чтобы иметь автономное приложение, которое использует общие библиотеки
Решение
Настройка переменной среды LD_LIBRARY_PATH является одной из вариантов. Например:
export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
Другой вариант - установить RPATH вашего приложения QT во время связывания. Установка RPATH на значение «$ Origin» приведет к тому, что динамический линкетер будет выглядеть в том же каталоге, что и ваше приложение QT во время выполнения. Например, при использовании QMake добавьте следующий фрагмент в файл проекта:
unix:!mac{
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
QMAKE_RPATH=
}
Это установит RPATH на «$ Origin: $ Origin/lib: $ Origin/Libs», что означает, что динамический линкера сначала будет смотреть в местоположении вашего приложения QT, затем в подкаталоге LIB в его местоположении, затем в Libs подкаталог в его местоположении и, наконец, в любых определенных местах.
Другие советы
Unix / Linux будет смотреть в LD_LIBRARY_PATH (если установлен) сначала, прежде чем посмотреть в системных стандартных LIBS. Так что, если вы установите это, вы действительно можете переопределить. Так же, как настройка пути в Windows. Тот же эффект. Заказ имеет значение.
Вы можете добавить ./ или. в ld_library_path.
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
LD_LIBRARY_PATH
а также QMAKE_RPATH
никогда не работал на меня. Вместо этого я установил QMAKE_RPATHDIR
в моем .pro
файл. Например, после того, как он построил и установил (make install
) Qt, он был помещен в /usr/local/Trolltech/Qt-4.8.5/lib/
. Анкет Затем я пишу следующее в своем .pro
файл:
QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/
ПРИМЕЧАНИЕ 1: Относительные пути, кажется, не работают. Предпочитают абсолютные пути.
Примечание 2: Когда вы тогда make
, вы можете видеть, что следующему варианту дается линкеру: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/
ПРИМЕЧАНИЕ 3: Чтобы убедиться, что двоичные ссылки динамически до правильной библиотеки, вы можете отобразить версию QT в Runtime, доставленную qVersion()
.