(Qt 5.4.1)这个应用程序启动失败,因为它无法找到或加载Qt平台插件“xcb”。

11

我重新安装了Ubuntu 14.04和Qt 5.4.1以及Qt Creator。

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

当我在Qt Creator中打开旧项目并进行构建时,一切正常。

但是,当我运行此项目时,它显示:

  

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

     

可用的平台插件包括:linuxfb,minimal,offscreen,xcb。

     

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

于是我搜索了这个问题并尝试了所有方法。 我安装了每个软件包(libxcb系列),但没有任何帮助!

请有人帮帮我...

我尝试了您的方法。

当我在platform目录下运行ldd命令时,它显示: ldd libqxcb.so under platform$

你可以看到没有东西丢失。实际上,我在platform目录中建立了一个名为libqxcb.so的软链接。在此之前,我的platform目录中没有libqxcb.so。

当我对可执行文件运行ldd命令时,它显示: executable shot

您可以看到当我执行此文件时出现的错误。


你有阅读过官方的部署文档吗?你在谷歌上使用了哪些请求? - Dmitry Sazonov
1
我阅读了此页面,并安装了其提到的所有软件包,但什么也没有发生。 我还通过使用“此应用程序未能启动,因为它无法找到或加载Qt平台插件'xcb'”请求在谷歌上搜索了一下。 - OrionNebular
http://doc.qt.io/qt-5/linux-deployment.html#application-dependencies - Dmitry Sazonov
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - OrionNebular
我现在不在我的电脑旁,正在使用我的 Mac。稍后我会为您上传截图。 - OrionNebular
12个回答

21

对于类似的问题,在我的情况下,我解决了:

export QT_PLUGIN_PATH=<qt base path>/plugins

1
真不敢相信我要花这么长时间才能找到这个解决方案。你是怎么想出来的? - Haffi112
实际上,在StackOverflow的其他类似问题中已经阅读过它。 - BillyJoe
8
你也可以设置export QT_DEBUG_PLUGINS=1来获得更详细的信息。 - wardw
1
抱歉问一下,你是在哪里添加那行代码的?我正在我的RPI3上编译,你是在编译时将其添加到CMake中吗?还是在RPI3的其他位置? - lightshadown
1
@lightshadown 是一个系统变量。我是从 Linux shell 中设置它的。在树莓派3上,我不知道它取决于操作系统。 - BillyJoe

11
尝试进入程序使用的Qt安装的platforms文件夹,并在命令提示符中运行ldd libqxcb.so。然后在输出中检查是否存在任何缺失的依赖项。如果libqxcb.so缺少其中一个依赖项,就会产生您提到的输出。
您还可以在可执行文件上使用ldd命令来检查是否有找不到的依赖项。
以下是ldd输出中缺失依赖项的示例:

<code>ldd</code>输出示例

附注:此问题的被接受的答案也可能会对您有所帮助(创建qt.conf文件)。

我进入platform目录并运行ldd libqxcb.so命令。所有依赖项都被找到,没有缺失。我还运行了ldd我的可执行文件,但是没有依赖于libqxcb.so。非常奇怪... - OrionNebular
这是因为libxcb.so在启动时被动态链接,而ldd只能检测静态链接库。如果平台目录中没有libxcb.so,则可能未构建或未安装,请仔细检查配置日志以查看发生了什么。软链接是100%错误的。 - HappyCactus

5
我刚刚遇到了一个非常类似的 问题,花了几个小时,但是在相关的可执行文件或libqxcb.so的 ldd 结果中没有发现任何 "not found" 的信息。最终我发现这是可执行文件本身的问题,而不是Qt的问题。尝试了 QT_QPA_PLATFORM='' executable,成功解决了 :)

谢谢。我在使用phantom.js时遇到了这个问题,但他们似乎忽略了它:https://github.com/ariya/phantomjs/issues/14377 - JepZ
在Debian Stretch上对我也起作用了。这里还可以找到另一个关于此问题的报告:https://forum.antergos.com/topic/5239/phantomjs-complains-about-missing-qt-platform-plugin-xcb/3 - Benjamin Peter

3

我在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

现在Qt Creator已经启动。

2
在我的情况下,缺少 libxcb-xinerama.so.0,因此解决方法是 sudo apt install libxcb-xinerama0-dev - Edouard Thiel

2

'这个应用程序启动失败,因为它找不到或加载Qt平台插件“xcb”.'

请查看附带的网页,向下滚动到“Qt插件”标题。 第一段文字中有详细说明。

即使您将其他内容静态链接,也需要libqxcb.so文件。

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

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

因此,这完全忽略了我们试图静态包含所有“xcb”功能的尝试。

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


1
请注意,您可以使用 qt.conf 文件覆盖 dlopen 使用的路径(我想)。 - Kyle Strand

1
在我的情况下,我使用的是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、offscreen、vnc、xcb。

已中止(核心已转储)

所以我运行了以下命令:

sudo apt-get install libxcb-xinerama0

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

1

对于那些尚未找到解决方案并迫切寻求答案的人,这是@wardw在当前排名最高的答案上发表的评论副本,它帮助我解决了我的潜在问题。

export QT_DEBUG_PLUGINS=1

将此内容放置到运行配置或在运行项目之前放置到控制台中,将会打印更多关于错误的信息。


我按照这个设置,发现缺少libxi.so.6。安装了libxi.so.6之后,又出现了另一个错误(与X显示有关),最终我使用了@Dave的解决方案来解决它。 - user10253771

1
这可能很明显,但我在一个没有显示器的SSH会话中运行GUI时遇到了这个错误。为什么?因为我正在一个比它预期的小触摸屏旁边的更大屏幕上开发嵌入式应用。
无论如何,在bash中,以下命令将程序定位到其自己的屏幕:
export DISPLAY=':0.0'

希望这能帮到某个人。

感谢eyllanesc的编辑,看起来好多了! - Dave

1

在Debian 10上安装qtcreator 4.15.1会遇到类似的问题。

下载Qt Creator开源版本

显示导致错误的库。

export QT_DEBUG_PLUGINS=1

Run /opt/qtcreator-4.15.1/bin/qtcreator

搜寻损坏的库文件

ldd /opt/qtcreator-4.15.1/lib/Qt/plugins/platforms/libqxcb.so

查找未正确链接的库文件。

解决方法

下载库依赖项并安装即可解决。

sudo apt install ./libxcbutil1_0.4.0-1+b1_amd64.deb


答案来源


0

我用那个命令解决了这个问题:

sudo ln -s /usr/lib/x86_64-linux-gnu/libxcb-util.so.0 /usr/lib/x86_64-linux-gnu/libxcb-util.so.1

我的Python版本:3.7.5

包名:PyQt5

操作系统:Linux(Debian)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接