在Wayland

时间:2018-05-09 00:18:24

标签: qt qtwayland

运行:

./myapp -platform wayland

给出:

  

此应用程序无法启动,因为它无法找到或加载   Qt平台插件" wayland"在""。

     

可用的平台插件有:eglfs,linuxfb,minimal,minimalegl,   offscreen,vnc,xcb。

     

重新安装应用程序可能会解决此问题。中止(核心   倾倒)

按照说明操作:How to build qtwayland?

运行qmake给出:

  

运行配置测试......   完成运行配置测试。

     

配置摘要:   Qt Wayland客户........................没有

     

Qt Wayland Compositor ....................没有

     

注意:未检测到wayland-egl支持。已禁用跨工具包兼容性。

qtwayland README表示2个依赖项:

  1. xkbcommon 0.2.0 - http://xkbcommon.org/
  2. wayland 1.6.0 - http://wayland.freedesktop.org/
  3. 在fedora 28上,默认安装了libxkbcommon。另外我还安装了libxkbcommon-devel

     dnf whatprovides *wayland*
    

    虽然我的gnome会话是在Wayland下运行的,但没有返回结果。

    我看到我可以从https://wayland.freedesktop.org/releases.html下载wayland。 我下载并解压缩了1.15,但不确定如何处理解压缩源:我构建它吗?我需要把它放在qtwayland可以找到它的地方吗?

    我发现默认情况下在fedora 28中存在以下文件:

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

    但是将其复制到〜/ Qt / 5.10.1 / gcc_64 / plugins / platforms 无法解决我的应用程序启动错误。

    问题:如何让我的Qt应用程序在Wayland下运行?

    为响应下面的bobbaluba问题而添加:

    我正在尝试针对官方Qt二进制文件构建QtWayland,因为它不包括在内。

    按照建议安装了wayland-devel,但是根据上面的消息,qmake仍然没有报告Qt Wayland Client的配置。

    尝试使用dnf安装qt5-qtwayland,报告: 包qt5-qtwayland-5.10.1-2.fc28.x86_64已经安装,正在跳过。

    以下内容可能相关:

    ? sudo dnf whatprovides libwayland-egl.so

      

    上次元数据到期检查:0:18:44前于2019年5月9日星期三09:15:20 PM +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 /插件/韦兰图形集成服务器/ libwayland-egl.so

    〜/ QT / 5.11.0 / gcc_64 /插件/韦兰图形集成服务器/ libwayland-egl.so.debug

    被添加到〜/ Qt / 5.11.0 / gcc_64 / plugins / platforms。

    当我安装Qt5.11rc时,cmake的CMakeFile.txt突然停止工作 - gcc无法找到像QDate这样的Qt标头。

    尝试编译示例项目'地址簿'使用Qt5.11得到:

      

    QSocketNotifier:只能用于以QThread启动的线程

         

    使用Wayland-EGL

         

    使用' xdg-shell-v6' shell集成

    简而言之,使用Qt5.11rc似乎可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

为什么配置QtWayland会失败?

我假设(如果我错了,请纠正我)你正试图建立QtWayland来对抗不包括QtWayland的官方Qt二进制文件。

您是否安装了开发包?在你的情况下,我认为它应该是wayland-devel

顺便说一句,你看到的libwayland-egl.so是你的发布版本的qt wayland-egl缓冲区集成版本(与qmake抱怨的libwayland-egl.so依赖项不同)。但是,你仍然可以在没有wayland-egl的情况下建立QtWayland,所以我不确定这是什么。

其他选项:

1。使用官方QtWayland二进制文件

你可能遇到了这个问题,因为Qt软件包以前没有包含QtWayland。

然而,从Qt 5.11.0开始,官方Qt二进制文件应该包括QtWayland,所以最简单的方法可能是安装Qt 5.11.0或更新版本。

2。使用发行版的Qt(和Qt Wayland)

从发行版安装并使用Qt,请确保您还安装qtwayland(在Fedora上我认为它是qt5-qtwayland)。