首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在未安装qt的linux上启动qt5应用程序时,无法加载平台插件"xcb“

在未安装qt的linux上启动qt5应用程序时,无法加载平台插件"xcb“
EN

Stack Overflow用户
提问于 2013-06-14 18:22:51
回答 19查看 261.4K关注 0票数 114

我为linux写了一个使用Qt5的应用程序。

但是,当我尝试在没有安装Qt SDK的linux上启动它时,控制台中的输出是:

无法加载平台插件"xcb“。可用的平台包括:

我该如何解决这个问题呢?也许我需要复制一些插件文件?当我使用安装了Qt5的ubuntu,但是我重命名了Qt目录,同样的问题也发生了。所以,它使用了Qt目录中的一些文件...

更新:当我在应用目录"platforms“文件夹中创建libqxcb.so文件时,应用仍然无法启动,但错误消息发生了变化:

无法加载平台插件"xcb“。可用的平台包括:

xcb

这怎么会发生呢?为什么平台插件可用但不能加载?

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2013-08-30 20:05:48

使用ldd (man ldd)显示共享库依赖项。在libqxcb.so上运行此程序

.../platforms$ ldd libqxcb.so

显示了除了libQt5Core.so.5和libQt5Gui.so.5 (以及许多其他系统库)之外,xcb还依赖于libQt5DBus.so.5。将libQt5DBus.so.5添加到您的共享库集合中,您应该已经准备好继续下一步。

票数 62
EN

Stack Overflow用户

发布于 2014-08-22 08:03:18

如前所述,您需要确保在部署应用程序时安装了平台插件。根据你想要部署东西的方式,有两种方法可以在运行时告诉你的应用程序平台插件(例如platform / plugins /libqxcb.so)在哪里,这两种方法可能对你有效。

第一种方法是通过QT_QPA_PLATFORM_PLUGIN_PATH变量导出目录的路径。

QT_QPA_PLATFORM_PLUGIN_PATH=path/to/plugins ./my_qt_app

export QT_QPA_PLATFORM_PLUGIN_PATH=path/to/plugins
./my_qt_app

另一种选择,我更喜欢的是在可执行文件所在的目录中创建一个qt.conf文件。它的内容是:

[Paths]
Plugins=/path/to/plugins

有关这方面的更多信息,请访问hereat using qt.conf

票数 58
EN

Stack Overflow用户

发布于 2016-09-27 20:58:42

我尝试在预装了Qt 5.7的Ubuntu16.04LTS上启动用Qt 5.5编译的二进制文件。它没有起作用。

首先,我按照这里的建议,用ldd检查了二进制文件本身,并满足了所有“未找到”的依赖项。然后抛出了这个臭名昭著的This application failed to start because it could not find or load the Qt platform plugin "xcb"错误。

如何在Linux中解决此问题

首先,您应该在您的二进制文件所在的位置创建platforms目录,因为它是Qt查找XCB库的位置。将libqxcb.so复制到那里。我想知道为什么其他答案的作者没有提到这一点。

然后,您可能希望在设置了QT_DEBUG_PLUGINS=1环境变量的情况下运行二进制文件,以检查libqxcb.so的哪些依赖项未得到满足。(您也可以按照接受答案中的建议使用ldd来完成此操作)。

命令输出可能如下所示:

me@xerus:/media/sf_Qt/Package$ LD_LIBRARY_PATH=. QT_DEBUG_PLUGINS=1 ./Binary
QFactoryLoader::QFactoryLoader() checking directory path "/media/sf_Qt/Package/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/media/sf_Qt/Package/platforms/libqxcb.so"
Found metadata in lib /media/sf_Qt/Package/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 329472
}


Got keys from plugin meta data ("xcb")
loaded library "/media/sf_Qt/Package/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/media/sf_Qt/Package/platforms/libqxcb.so" : "Cannot load library /media/sf_Qt/Package/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by ./libQt5XcbQpa.so.5))"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

注意失败的libQt5DBus.so.5库。将其复制到您的库路径中,在我的示例中,它与我的二进制文件所在的目录相同(因此为LD_LIBRARY_PATH=.)。重复此过程,直到满足所有依赖项为止。

另外,感谢QT_DEBUG_PLUGINS=1this answer的作者。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17106315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档