Я пытаюсь развернуть приложение 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.Может ли это быть причиной проблемы?
Вот изображение моей папки:
Окончательное редактирование
Iполучил это работает!Проблема была в том, что у меня libQt5DBus.so
вместо libQt5DBus.so.5
.Поэтому он нашел все библиотеки в моем каталоге с версией 5.11, за исключением библиотеки libQt5DBus.so
, которая была найдена в старой установке с версией 5.6.
Спасибо за вашу помощь.