Linux下解决发布Qt程序报错:it could not find or load the Qt platform plugin “xcb” in “”

简述

用Qt5.8版本在ubuntu16.04版本下编写Qt应用程序,生成release版本并打包,到另一台无Qt环境的linux系统中运行。
网上通常是按以下几个步骤进行:
1、生成release程序。
2、拷贝release程序到一个新文件夹,执行一个脚本文件。脚本文件的作用是:ldd 程序名,并拷贝程序依赖的库到这个新文件夹。
3、编写一个和程序同名的sh文件,以此作为启动程序。不直接用release程序启动的好处是可以无须配置环境变量,而把配置环境变量过程写在sh脚本文件中(当然也可以配置环境变量后运行release程序的方式启动程序)。
4、拷贝platforms文件夹到这个新文件夹。
5、拷贝整个新文件夹到新linux系统,发布完成。
作者在第5步后会提示failed to start because it could not find or load the Qt platform plugin “xcb” in “”的错误,由于对linux文件系统的不熟悉,研究了一天才解决。

解决

经过上网查询,这个问题主要是platforms文件夹中libqxcb.so的依赖库没有拷贝导致的。可是如何拷贝依赖库,是个大问题!
在程序当前目录下输入ldd platforms/libqxcb.so后,提示/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 “not found”,去原linux电脑中,确实找到了libQt5XcbQpa.so.5文件,但把这个文件拷贝到release所在目录下并没有效果!
研究了一天,才明白libQt5XcbQpa.so.5文件是链接文件!使用ls -al可以找到链接文件对应的源文件!把源文件拷贝到release目录下,再新建一个相同名字的链接文件,才算完成了这个libQt5XcbQpa.so.5资源文件的打包!!
新建链接文件的命令:ln -s $PWD/libQt5XcbQpa.so.5.8.0 libQt5XcbQpa.so.5。
同样的,还有一个libQt5DBus.so.5的链接文件,也要通过拷贝真实文件(libQt5DBus.so.5.8.0)到打包目录,然后通过ln -s $PWD/libQt5DBus.so.5.8.0 libQt5DBus.so.5命令建立同名的链接文件。
“xcb” in “”的问题完美解决,程序正常启动运行了。

结尾

这个问题对于刚转linux编程的作者确实头大,网上最多是一句话把libQt5XcbQpa.so.5文件拷贝即可,没有如此详细的解释对于linux编程生手确实头疼。
列一下Linux中文件颜色所代表的属性:
绿色文件:可执行程序
红色文件:压缩文件
蓝色文件:目录
白色文件:普通文件
浅蓝色文件:链接文件。即用ln命令建立的文件!
红色闪烁文件:链接有问题的链接文件!
黄色文件:设备文件
灰色文件:其它文件

### 解决 LinuxQt 应用无法找到或加载 XCB 平台插件 当遇到 `bash: ./OpenGL_Qt_Binding: No such file or directory` 错误时,这通常意味着应用程序依赖于特定库文件却未能成功定位这些资源[^1]。 对于 Qt 应用程序而言,在 Linux 上运行时如果提示缺少平台插件 'xcb' 或者无法加载该插件,则可能是由于以下几个原因引起: #### 1. 缺少必要的开发包 确保安装了所有必需的 QtXCB 开发包。可以通过以下命令来安装缺失的软件包: ```shell sudo apt-get update && sudo apt-get install libqt5gui5 qtbase5-dev libxcb-xinerama0 ``` #### 2. 插件路径配置错误 检查环境变量设置是否正确。特别是 `QT_PLUGIN_PATH` 变量应该指向包含所需插件的位置。可以尝试临时添加如下导出语句到当前 shell session 中: ```shell export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/ ``` #### 3. 动态链接器缓存未更新 有时即使已经安装好了所需的共享库,动态链接器也可能因为其内部缓存而找不到新加入的库文件。此时可执行下列指令刷新缓存: ```shell sudo ldconfig ``` #### 4. 运行时权限不足 确认目标二进制文件及其所在目录具有适当读取/执行权限,并且不属于其他用户组独占访问的情况。必要时调整相应权限位: ```shell chmod +x /path/to/application_binary chown $USER:$USER /path/to/application_directory -R ``` 通过以上措施应当能够有效解决大多数情况下 Qt 应用在 Linux 系统上因缺乏 XCB 支持而导致启动失败的问题。若仍然存在困难,则建议进一步排查具体日志输出以获取更详细的诊断信息。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值