Как установить, где приложение Qt находит Qt-модуль?

Я хотел бы включить libQtGui.so.4 libQtNetwork.so.4 и libQtCore.so.4 в тот же каталог, где находится мое приложение. Как я могу понять Qt? y предназначено иметь автономное приложение, которое использует разделяемые библиотеки

Ответ 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().