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

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

11
задан yan bellavance 23 March 2010 в 04:50
поделиться

2 ответа

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

9
ответ дан 3 December 2019 в 10:25
поделиться

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

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

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
0
ответ дан 3 December 2019 в 10:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: