Запуск приложения Qt под Wayland

Бег:

./myapp -platform wayland

дает:

Не удалось запустить это приложение, так как не удалось найти или загрузить плагин платформы Qt "wayland" в "".

Доступные плагины платформы: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Переустановка приложения может решить проблему. Прервано (ядро сброшено)

Следуя инструкциям: Как собрать qtwayland?

Запуск qmake дает:

Запуск тестов конфигурации... Закончен запуск тестов конфигурации.

Сконфигурировать сводку: Qt Wayland Client ........................ нет

Qt Wayland Compositor .................... нет

Примечание: поддержка wayland-egl не обнаружена. Кросс-инструментарий совместимость отключена.

Qtwayland README указывает на две зависимости:

  1. xkbcommon 0.2.0 - http://xkbcommon.org/
  2. Wayland 1.6.0 - http://wayland.freedesktop.org/

На fedora 28 libxkbcommon установлен по умолчанию. Кроме того, я также установил libxkbcommon-devel

 dnf whatprovides *wayland*

не возвращает результатов, хотя мой сеанс gnome выполняется под Wayland.

Я вижу, что могу скачать Wayland с https://wayland.freedesktop.org/releases.html. Я скачал и распаковал 1.15, но не уверен, что делать с распакованным исходным кодом: собирать ли его? мне нужно положить его где-нибудь, где qtwayland сможет его найти?

Я вижу, что в fedora 28 по умолчанию существует следующий файл:

/usr/lib64/qt5/plugins/wayland-graphics-integration-server/libwayland-egl.so

Но копирование его в ~/Qt/5.10.1/gcc_64/plugins/platform не устраняет ошибки запуска моего приложения.

Вопрос: как заставить мое приложение Qt работать под Wayland?


Добавлено в ответ на вопросы Боббалуба ниже:

Я пытаюсь построить QtWayland против официальных бинарных файлов Qt, потому что он не включен.

Установленный wayland-devel, как было предложено, но qmake по-прежнему сообщал об отсутствии конфигурации для Qt Wayland Client, как указано в сообщении выше.

Попытался установить qt5-qtwayland с помощью dnf, который сообщил: Пакет qt5-qtwayland-5.10.1-2.fc28.x86_64 уже установлен, пропуская.

Следующее может быть уместным:

? sudo dnf whatprovides libwayland-egl.so

Последняя проверка срока действия метаданных: 0:18:44 назад в среду, 09 мая 2018 г., 09:15:20 +08.

qt5-qtwayland-5.10.1-2.fc28.i686: Qt5 - Поддержка платформы Wayland и модуль QtCompositor

Репо: Fedora

Подобрано из:

Обеспечить: libwayland-egl.so

? find / -name libwayland-egl.so * -print

/usr/lib64/libwayland-egl.so

/usr/lib64/qt5/plugins/wayland-graphics-integration-server/libwayland-egl.so

? sudo ldconfig -p | grep wayland-egl

libwayland-egl.so.1 (libc6, x86-64) => /lib64/libwayland-egl.so.1

libwayland-egl.so (libc6, x86-64) => /lib64/libwayland-egl.so

Установил Qt 5.11.0rc, что привело к

~/Qt/5.11.0/gcc_64/ плагины / Wayland-график-интеграция-сервер / libwayland-egl.so

~/Qt/5.11.0/gcc_64/ плагины / Wayland-график-интеграция-сервер / libwayland-egl.so.debug

добавляется в ~/Qt/5.11.0/gcc_64/plugins/ платформы.

CMakeFile.txt cmake внезапно перестал работать, когда я установил Qt5.11rc - с gcc не удалось найти заголовки Qt, такие как QDate.

Попробовал компилировать пример проекта 'адресная книга' с использованием Qt5.11 и получил:

QSocketNotifier: может использоваться только с потоками, запущенными с QThread

Использование Wayland-EGL

Использование интеграции оболочки 'xdg-shell-v6'

Короче говоря, использование Qt5.11rc, похоже, решает проблему.

1 ответ

Решение

Почему не удается настроить QtWayland?

Я предполагаю (поправьте меня, если я ошибаюсь), что вы пытаетесь собрать QtWayland из официальных двоичных файлов Qt, которые не включают QtWayland.

У вас установлены пакеты разработки? В вашем случае я думаю, что это должно быть wayland-devel,

Кстати, libwayland-egl.so Вы видите, является ли версия вашего дистрибутива интеграции буфера qt wayland-egl (и не совпадает с зависимостью libwayland-egl.so, на которую жалуется qmake). Тем не менее, вы все равно сможете собрать QtWayland без wayland-egl, поэтому я не уверен, о чем идет речь.

Другие опции:

1. Используйте официальные двоичные файлы QtWayland

Вы, вероятно, столкнулись с этой проблемой, потому что пакеты Qt ранее не включали QtWayland.

Однако, начиная с Qt 5.11.0, официальные двоичные файлы Qt должны включать QtWayland, поэтому, вероятно, проще всего будет установить 5.11.0 RC или бета-версию (поскольку 5.11.0 еще не выпущена).

2. Используйте версию дистрибутива Qt (и Qt Wayland)

Установите и используйте Qt из дистрибутива, убедитесь, что вы также установили qtwayland (на федоре я думаю это qt5-qtwayland).

Другие вопросы по тегам