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

StackOverflow https://stackoverflow.com/questions/2497192

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top