Развертывание Qt в Linux - PullRequest
       2

Развертывание Qt в Linux

0 голосов
/ 18 февраля 2019

Я пытаюсь развернуть приложение Qt в другой ОС.

Windows работала как чудо, следуя этой странице справки.К сожалению, у меня проблемы с развертыванием моего программного обеспечения в Linux.Я прочитал эту страницу справки, но кажется, что я не понимаю раздел Plugins.

Что я сделал до сих пор:

  • Я скомпилировал свое приложение, используя QMake
  • Я добавил все динамически связанные библиотеки (например: libQt5Core.so.5, libQt5Core.so.5.11.2, libQt5Gui.so.5, libQt5Gui.so.5.11.2 ...) в тот же каталог, в котором находится мое приложение (некоторые из них являются символическими ссылками по какой-то причине, но здесь проблема не в этом)
  • Я создал подкаталогназывается platforms и помещает туда библиотеку libqxcb.so
  • Я создал bash-скрипт, как предложено в учебнике, который я запускаю

РЕДАКТИРОВАТЬ:ошибка уже решена:

теперь я борюсь за то, как и какие плагины я должен также поместить в свой каталог.Я получаю следующее сообщение об ошибке:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. 
Available platform plugins are: xcb.
Aborted

В соответствии с этим вопросом я выполнил ldd libqxcb.so, в котором перечислены следующие библиотеки (и многие другие)

./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.11' not found (required by ./libqxcb.so)
linux-vdso.so.1 (0x00007ffd766c5000)
libQt5XcbQpa.so.5 => /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 (0x00007fd2a6181000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fd2a5f7f000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fd2a5c69000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fd2a5a24000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fd2a5770000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fd2a5007000)
libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007fd2a4d7d000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fd2a4632000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fd2a43a6000)
...

Я видел, что библиотека libQt5DBus.so.5 также требуется.Поэтому я скопировал файл (а также libQt5DBus.so.5.11.2) в родительский каталог platforms, где находятся все остальные мои библиотеки Qt.

Однако, я все еще получаю то же сообщение об ошибке.

Может быть, это связано с первым выводом ldd, так как он говорит "не найден"?

    ./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.11' not found (required by ./libqxcb.so)?

Когда я смотрю на мое развертывание Windows, у меня появляются дополнительные папки с именами iconengines, imageformats, styles, translations. Нужно ли мне также предоставлять эти папки и библиотеки?Если да, где я могу их найти и как проверить, какой мне нужен?

РЕДАКТИРОВАТЬ: Новая ошибка

Я выяснил первый вопрос.Это было из-за пропущенной библиотеки, а именно: libQt5XcbQpa.so.5.

Однако теперь я получаю новую ошибку:

Cannot mix incompatible Qt library (version 0x50602) with this library (version 0x50b02)

Я заметил, что на ПК установлена ​​старая установка Qt (5.6), куда я хочу установить приложение.Я скопировал мои библиотеки (5.11) в ту же папку, где находится мое приложение, и мой bash-скрипт вызывает:

LD_LIBRARY_PATH=$mydirname
export LD_LIBRARY_PATH

Я подумал, что эта папка сейчас находится в пути поиска динамически связанных библиотек.Однако есть и другая установка (5.6).Будут ли эти библиотеки найдены до или после библиотек в моей папке?Я спрашиваю, потому что в установке 5.6, например, отсутствует библиотека QtCharts, которая есть в моей папке, но с версией 5.11.Может ли это быть причиной проблемы?

Вот изображение моей папки:

folder structure

Окончательное редактирование

Iполучил это работает!Проблема была в том, что у меня libQt5DBus.so вместо libQt5DBus.so.5.Поэтому он нашел все библиотеки в моем каталоге с версией 5.11, за исключением библиотеки libQt5DBus.so, которая была найдена в старой установке с версией 5.6.

Спасибо за вашу помощь.

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