Как я могу указать, где приложение Qt находит модуль Qt? - PullRequest
11 голосов
/ 23 марта 2010

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

Ответы [ 3 ]

9 голосов
/ 23 марта 2010

Установка переменной среды 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 в его расположении и, наконец, в любом месте, определенном системой.

0 голосов
/ 04 января 2013

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().

0 голосов
/ 23 марта 2010

UNIX / Linux сначала заглянет в LD_LIBRARY_PATH (если установлен), прежде чем искать в стандартных системных библиотеках.Так что, если вы установите это, вы действительно можете переопределить.Так же, как установка PATH в Windows.Тот же эффект.Заказ имеет значение.

Вы можете добавить ./ или.в LD_LIBRARY_PATH.

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...