【问题标题】:(Qt 5.4.1) This application failed to start because it could not find or load the Qt platform plugin "xcb"(Qt 5.4.1) 此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“xcb”
【发布时间】:2015-06-06 23:30:22
【问题描述】:

我重新安装了我的 ubuntu 14.04 和 Qt 5.4.1 和 Qtcreator。

Qt 5.4.1 是使用“-opensource -nomake-test -nomake-example”配置选项从源代码构建的。

当我在 QtCreator 中打开一个旧项目并构建它时,一切正常。

但是当我运行这个项目时它显示:

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

可用的平台插件有:linuxfb、minimal、offscreen、xcb。

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

所以我用谷歌搜索了这个问题并尝试了一切。 我安装了所有软件包(libxcb 系列),但没有任何帮助!

请有人帮助我...

我试过你的方法。

当我在platform 目录中运行ldd 命令时,它显示:

您可以看到没有任何遗漏。实际上,我在名为 libqxcb.so 的平台目录中创建了一个软链接。之前我的平台目录下没有libqxcb.so。

当我对我的可执行文件运行ldd 命令时。表明:

当我执行这个文件时你可以看到错误。

【问题讨论】:

  • 您是否阅读过有关部署的官方文档?您在 google 中使用了哪些请求?
  • 我阅读了this page 并安装了它提到的所有软件包,但什么也没发生。我使用“此应用程序无法启动,因为它无法找到或加载 Qt 平台插件'xcb'”请求搜索谷歌。
  • 谢谢,我试过这个页面。这与下面的答案相同。我使用了ldd 命令,但什么也没发生。
  • 我不在我的 PC 和使用我的 mac。稍后我会为您上传屏幕截图..

标签: c++ qt


【解决方案1】:

尝试转到您的程序正在使用的 Qt 安装的 platforms 文件夹,然后在命令提示符下运行 ldd libqxcb.so。然后检查输出是否缺少任何依赖项。如果 libqxcb.so 缺少其依赖项之一,则会产生您提到的输出。

您也可以在您的可执行文件上使用ldd 命令来检查是否有任何无法找到的依赖项。

下面是ldd 输出中缺少的依赖项的示例:

PS:this 问题的接受答案也可能对您有所帮助(创建一个 qt.conf 文件)。

【讨论】:

  • 我进入platform目录并运行ldd libqxcb.so命令。找到了每个依赖项,没有遗漏任何东西。而且我还运行ldd 我的可执行文件,但不依赖libqxcb.so。很奇怪……
  • 这是因为libxcb.so在启动时是动态链接的,ldd只能检测静态链接的库。如果平台目录中没有 libxcb.so,或者它没有构建或没有安装,请仔细检查配置日志以查看发生了什么。软链接 100% 错误。
【解决方案2】:

'此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“xcb”。'

查看随附的网页,向下滚动到标题“Qt 插件”。见第一段。

libqxcb.so 是必需的,即使您静态链接其余部分也是如此。

http://doc.qt.io/qt-5/linux-deployment.html#application-dependencies

Qt 可能已经编写了他们的源代码软件以按以下方式工作: 而不是允许 libqxcb.so 在启动时自动加载(使用 rpath's),他们使用 dlopen() 函数来加载它,作为 QPA 函数集的一部分,在 main() 开始后不久。

所以这完全无视我们试图静态包含所有“xcb”函数的尝试。

如果他们的 dlopen() 失败,他们只会抛出我们都知道和讨厌的错误消息,然后调用信号 6 来中止它(非常不必要),而不是正常退出。

【讨论】:

  • 请注意,您可以使用qt.conf 文件覆盖dlopen 使用的路径(我认为)。
【解决方案3】:

我只是在一个非常相似的issue 中停留了几个小时,在相关可执行文件或 libqxcb.so 的ldd 结果中也没有任何“未找到”。最后我发现这是可执行文件本身的问题,而不是 Qt 的问题。试过QT_QPA_PLATFORM='' executable,它有效:)

【讨论】:

【解决方案4】:

对于类似的问题,就我而言,我解决了:

export QT_PLUGIN_PATH=<qt base path>/plugins

【讨论】:

  • 不敢相信我必须搜索这么长时间才能找到这个解决方案。你是怎么想出来的?
  • 其实在stackoverflow的其他类似问题中阅读。
  • 您还可以设置export QT_DEBUG_PLUGINS=1 以更好地了解正在发生的事情。
【解决方案5】:

执行命令:

sudo ./app-name -platform linuxfb

【讨论】:

    【解决方案6】:
    export QT_PLUGIN_PATH=<your qt installation path>/plugins/platforms
    

    和mbjoe说的一样,真的很管用!

    【讨论】:

      【解决方案7】:

      我在 linux xubuntu 18.04 上遇到了这个确切的错误

      qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
      This application failed to start because no Qt platform plugin could be initialized. 
      Reinstalling the application may fix this problem.
      
      Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
      
      Aborted (core dumped)
      

      首先,在从命令行启动 qtcreator 之前定义此环境变量会导致打印出更多调试:

      export QT_DEBUG_PLUGINS=1
      

      然后在调试中它在尝试从 xubuntu 18.04 上的命令行启动 qtcreator 时说:

      Cannot load library /home/myuser/Qt/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)
      

      请注意,它找不到 libxkbcommon-x11,因此修复如下:

      sudo apt-get install libxkbcommon-x11-dev
      export PATH=$PATH:~/Qt/Tools/QtCreator/bin
      

      现在 qtcreator 启动。

      【讨论】:

      • 在我的例子中,libxcb-xinerama.so.0 丢失了,所以修复是sudo apt install libxcb-xinerama0-dev
      【解决方案8】:

      对于尚未找到解决方案并拼命寻找答案的任何人,这是@wardw 对当前评分最高的答案的评论的副本,它帮助我解决了我的潜在问题。

      export QT_DEBUG_PLUGINS=1
      

      在运行项目之前将其放在运行配置中或控制台上,它将打印有关问题的更多信息。

      【讨论】:

      • 我按照这个设置发现 libxi.so.6 丢失了。安装完libxi.so.6后又弹出一个错误(X显示有问题),我用@Dave的方案终于解决了。
      【解决方案9】:

      这可能很明显,但我在从(无显示)SSH 会话运行 GUI 时遇到此错误 [ 为什么?我正在一个更大的屏幕上开发一个嵌入式应用程序,就在它打算用于的微型触摸屏旁边]。

      无论如何,在 bash 中,以下命令将应用程序定位到自己的屏幕:

      export DISPLAY=':0.0'
      

      希望这对某人有所帮助。

      【讨论】:

      • 感谢 eyllanesc 的编辑,看起来好多了!
      【解决方案10】:

      就我而言,我使用的是 Ubuntu 20.04,这个错误阻止了我启动 QT creator。我在终端中使用了以下命令:

      export QT_DEBUG_PLUGINS=1
      

      然后我再次从终端运行 QT Creator:

      ./qtcreator
      

      然后我有更详细的错误日志:

      无法加载库 /home/linhdh/Qt/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so: (libxcb-xinerama.so.0:无法打开共享对象文件:没有这样的文件或 目录)QLibraryPrivate::loadPlugin 失败 “/home/linhdh/Qt/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so” : "无法加载库 /home/linhdh/Qt/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so: (libxcb-xinerama.so.0:无法打开共享对象文件:没有这样的文件或 目录)” qt.qpa.plugin:无法加载 Qt 平台插件“xcb” 在“”中,即使它被发现了。此应用程序无法启动 因为没有 Qt 平台插件可以被初始化。重新安装 应用程序可能会解决此问题。

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

      中止(核心转储)

      所以我运行了以下命令:

      sudo apt-get install libxcb-xinerama0
      

      安装 libxcb-xinerama0 后,我可以正常运行 qtcreator。错误已修复。

      【讨论】:

        【解决方案11】:

        在 Debian 10 上安装 qtcreator 4.15.1 有类似的问题。

        download qtcreator opensource

        显示导致该错误的库。

        export QT_DEBUG_PLUGINS=1

        运行 /opt/qtcreator-4.15.1/bin/qtcreator

        搜索损坏的库 ldd /opt/qtcreator-4.15.1/lib/Qt/plugins/platforms/libqxcb.so 找出未正确链接的库。

        修复

        Download library dependency 并安装它会修复。

        sudo apt install ./libxcb-util1_0.4.0-1+b1_amd64.deb

        source of answer

        【讨论】:

          猜你喜欢
          • 2016-06-10
          • 2017-07-24
          • 2014-04-11
          • 2014-10-01
          • 2018-06-07
          • 2019-07-26
          • 2016-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多