QT5 使用静态编译环境,生成的动态库.so缺少xcb插件

jzh0210 jzh0210 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在使用QT开发动态库,里面集成了一些QT5的资源,需要使用QT5的环境,并且需要静态编译,以免移植或者在其他环境部署的时候出现各种各样的问题。

我编译了QT5.3.2的源码包,使用的是静态编译方式(./configure -release -static -qt-xcb)。因为之前用过4.7.2版本,流程还是懂的。但是发现使用Qtcreator,生成不了.so文件,只是自动生成了.a文件。我看了一下编译输出日志和makefile文件,确实有点问题,可能是qt5的bug。(在之前使用的4.7.2就没有问题)。很奇怪!

后来我干脆又编译了一个Qt的非静态版本(./configure -qt-xcb)。使用Qtcreator在非静态编译的环境生成了正确的makefile,然后再拿到静态编译的环境下编译,终于生成了动态库.so文件,大概16-17M。

这个库文件,在使用的过程中,会报这个错误:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Reinstalling the application may fix this problem


这下可难坏我了,我看网上人说缺少libqlinuxfb.so,libqminimal.so,libqoffscreen.so,libqxcb.so这4个文件,我把这4个文件静态链接进去也不行。ldd也没看到缺少什么依赖库。

望请大神指点,谢谢!
1、QT5的静态编译环境为什么不能使用Qtcreator正常生成.so动态库文件?
2、怎样解决动态库报缺少xcb插件的问题?
...全文

相关推荐

libX11生成libX11-xcb.so.1

解决部分Linux操作系统在安装Qt时候,缺少libX11-xcb.so.1文件的问题! 详细步骤可以查看CSDN IT1995博客

IT1995

Qt 5.9.9静态编译与xcb插件部署实战解析

在Linux环境下进行Qt应用开发与部署时,静态编译是解决跨系统依赖问题的有效手段。静态链接将Qt核心库直接集成进可执行文件,避免了目标机器上缺少libQt5Core等动态库的困扰。然而,静态编译并非一劳永逸,特别是涉及xcb平台插件时,系统级X11相关库的动态依赖依然可能导致程序启动失败。从glibc版本兼容性出发,基于CentOS 7、RHEL 7等老系统的静态Qt包(如qt-5.9.9-gcc485-libc217)能够显著提升二进制包的便携性。本文拆解静态Qt包的构建方法、configure参数选择

Badger4us

Ubuntu 22.04上Qt Creator启动报‘xcb’插件错误?别慌,一个命令帮你搞定依赖缺失

本文详细解析了Ubuntu 22.04上Qt Creator启动时常见的‘xcb’插件错误,提供了从诊断到解决的完整方案。通过使用Qt插件调试模式和ldd工具,开发者可以快速定位缺失的依赖库,并通过简单的apt命令安装解决。文章还提供了一键安装所有可能xcb依赖的解决方案,帮助开发者高效解决问题。

chongtai6075

Qt 5.9.9 静态编译与 xcb 插件部署指南:老系统 Linux 环境兼容性实践

Linux 环境下 Qt 应用部署时,动态库缺失和平台插件加载失败是常见难题,例如缺少 libQt5Core.so 或报出 'could not load platform plugin xcb'。静态编译技术将 Qt 核心库与 xcb 平台插件直接链入可执行程序,有效削弱运行时对动态库的依赖,对 CentOS 7 等老系统尤为适用。理解 glibc 版本兼容性、xcb 协议工作原理及静态插件导入机制,是构建高可移植性 Qt 应用的关键。本文以 qt-5.9.9-gcc485-libc217-static-

刘寅生律师

Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题

问题描述 安装Qt5.15.0后,在运行测试用例时弹出错误: 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, li

weixin_38654855
评论 3
收藏 已收藏
分享
返回顶部
jzh0210
Qt 21,503 成员 26,693 内容