2016-02-14 2 views
0

Я составил простое приложение Qt на Ubuntu 15.10.
Я создал папку lib и platform в том же каталоге, где находится исполняемый файл.
Я скопировал libicudata.so.54, libicui18n.so.54, libicuuc.so.54, libQt5Core.so.5, libQt5DBus.so.5, libQt5Gui.so.5, libQt5Widgets.so.5, libQt5XcbQpa .so.5 в lib и libxcb.so в платформы,
затем переместил приложение с папками на новую установку Debian 8.3.
Я также создал start.sh скрипт следующего содержания:Не удалось найти плагин Qt для платформы «xcb» на Debian 8.3

export LD_LIBRARY_PATH=$PWD/lib 
export QT_QPA_PLATFORM_PLUGIN_PATH=$PWD/platforms 
./QtTestApp 

Но когда я запустить приложение с помощью сценария он говорит, что не может найти Qt платформы плагин «XCB» ...
Я запускать ldd от самого приложения, так и на libxcb.so также, но мне кажется, он нашел все ...

ответ

2

«платформы» является вложенной директории плагинов.

Примерная структура

./QtTestApp 
./qt.conf 
./lib 
./lib/libicudata.so.54 
./lib/libicui18n.so.54 
… 
./lib/libQt5Widgets.so.5 
./plugins/platforms 
./plugins/platforms/libqxcb.so 
./plugins/platforms/libqlinuxfb.so 
./plugins/platforms/libqoffscreen.so 
./plugins/platforms/libqminimal.so 

с qt.conf

[Paths] 
Prefix = . 

В этом случае, вы, как правило, не нужно устанавливать QT_QPA_PLATFORM_PLUGIN_PATH.

LD_LIBRARY_PATH также можно избежать, если вы установите RPATH ./QtTestApp на $ORIGIN/lib.


Примечание: вероятно, что ваше приложение компилируется на Ubuntu 15.10 не работает на Debian 8. Это потому, что Ubuntu 15,10 использует новую версию LIBC и libstdC++, который не доступен на Debian 8. Вы можете работайте над этой проблемой, когда вы используете Ubuntu 14.04 в качестве компилятора. Тогда у вас есть примерно this list of compatible target distributions.

0

В какой-то момент Debian упаковал плагин Qt XCB отдельно от библиотеки графического интерфейса Qt, и похоже, что у вас есть эта версия. Два варианта:

  • установки libqt5xcbqpa5
  • обновление libqt5gui5
+0

Просто перечитайте вопрос - для чего вы копируете библиотеки? Просто оставьте их там, где они установлены - для этого нужен менеджер пакетов! –

0

У меня была та же проблема, начиная с предупреждения: QXcbIntegration: Невозможно создать платформу ... Который missleading, потому что он оказался плагин отсутствует в развертывании. Вот что я сделал: я скопировал папку «xcbglintegrations» из папки «плагинов» установки qt в dev-системе (в моем случае под «Qt/5.6/gcc_64/plugins») в развернутую папку приложения в «плагины». Затем достаточно предоставить пустой (!) Файл qt.conf в папку приложения, которая перезаписывает жестко кодированные пути библиотеки по умолчанию для метода qt.conf (который в случае папки «плагинов» относительный «плагины», как описано). Посмотрите here для получения дополнительной информации о файле qt.conf и значениях по умолчанию. Я нашел это, поскольку у меня были проблемы с определением пути в файле qt.conf, который должен быть правильно распознан. Правильный полный путь для qt.conf (и рекомендуется вместо пустого файла причины):

[Paths] 
Prefix = . 
Plugins = plugins