Запуск приложения 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 указывает на две зависимости:
- xkbcommon 0.2.0 - http://xkbcommon.org/
- 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
).