Я хотел бы включить libQtGui.so.4 libQtNetwork.so.4 и libQtCore.so.4 в тот же каталог, где находится мое приложение. Как я могу понять Qt? y предназначено иметь автономное приложение, которое использует разделяемые библиотеки
Как установить, где приложение Qt находит Qt-модуль?
Ответ 1
Настройка переменной среды 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 в его местоположении и, наконец, в любых системных локациях.
Ответ 2
UNIX/Linux будет выглядеть в LD_LIBRARY_PATH (если установлен), прежде чем смотреть в системные стандартные библиотеки. Поэтому, если вы установите это, вы действительно можете переопределить. Также как установка PATH на Windows. Тот же эффект. Вопросы упорядочения.
Вы можете добавить./или. для LD_LIBRARY_PATH.
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
Ответ 3
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 во время выполнения, поставляемую qVersion()
.