关于qt缺少xcb问题终极解决办法
关于qt缺少xcb问题终极解决办法
关于qt缺少xcb问题终极解决办法
问题背景
系统环境
qt版本
问题描述
解决过程
走的弯路
解决问题的关键
总结
问题背景
系统环境
中标麒麟,龙芯平台
qt版本
qt5.6
问题描述
原来的Qt程序是qt5.3.2版本,但是由于各种原因,升级成了qt5.6版本。
编译完成后放在其他机器上报错缺少xcb,报错如下:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.
Reinstalling the application may fix this problem.
1
2
3
4
5
6
解决过程
走的弯路
几乎尝试百度到的各种方式,无非就这么几种。
1、运行目录下添加platform文件夹,文件夹里放上libqxcb.so。
2、指定环境变量,具体什么变量记不清楚了。
3、在运行目录下,添加
libQt5Core.so
libQt5Gui.so
libQt5Network.so
libQt5Widgets.so
libQt5DBus.so
libicuuc.so
libicudata.so
libicui18n.so
最终结果还是不行。
解决问题的关键
设置环境变量 export QT_DEBUG_PLUGINS=1
加了这个环境变量,让我看到了QT程序加载的过程,看到了详细的报错信息。
最后一部分是这样的:
-
Found metadata in lib /usr/lib64/qt5/plugins/platforms/libqxcb.so, metadata=
-
{
-
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
-
"MetaData": {
-
"Keys": [
-
"xcb"
-
]
-
},
-
"className": "QXcbIntegrationPlugin",
-
"debug": false,
-
"version": 329218
-
}
-
-
-
Found metadata in lib /opt/dky/SASClient/bin/platforms/libqxcb.so, metadata=
-
{
-
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
-
"MetaData": {
-
"Keys": [
-
"xcb"
-
]
-
},
-
"className": "QXcbIntegrationPlugin",
-
"debug": false,
-
"version": 329216
-
}
-
-
-
QLibraryPrivate::loadPlugin failed on "/usr/lib64/qt5/plugins/platforms/libqxcb.so" : "Cannot load library /usr/lib64/qt5/plugins/platforms/libqxcb.so: (/lib64/libQt5XcbQpa.so.5: symbol _ZNK11QFontEngine6handleEv, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)"
-
This application failed to start because it could not find or load the Qt platform plugin "xcb"
-
in "".
-
-
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.
-
-
Reinstalling the application may fix this problem.
看到问题没?
/lib64/libQt5XcbQpa.so.5
这个库有问题。
于是我把libQt5XcbQpa.so,也放在运行目录下。
奇迹发生了,一切OK了!!!
总结
网上大部分搜到的解决办法,可能都是基于qt5.6之前的,但是qt5.6之后新加了几个库,所以网上的解决办法搜不到,所以才困扰了我这么久。
这次解决问题的关键在于,添加环境变量:export QT_DEBUG_PLUGINS=1
相信遇到此问题,利用这个方法,都可以很快的定位并解决问题了。
最后,祝大家好运!!!
————————————————
版权声明:本文为CSDN博主「我爱下午茶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_26106275/article/details/82778951
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了