This application failed to start because it could not find or load the qt platform plugin “xcb“

本文介绍了在Linux环境中,使用linuxdeployqt工具替代传统脚本打包Qt程序的方法,以解决生产环境中的库文件缺失问题。文章详细描述了linuxdeployqt的安装与使用步骤,以及如何通过设置环境变量和检查插件加载来确保程序的正确运行。
摘要由CSDN通过智能技术生成

在Linux打包Qt程序发布后在目标生产环境下出现以上问题,这个可能与打包方式有关。

linuxdeployqt

在Linux下Qt程序打包建议使用linuxdeployqt打包,传统的脚本打包方法虽然打包的程序基本不会出现缺少库文件的情况(因为所有程序使用到的库文件是一个一个拷贝进去的),但是传统的脚本打包法属于是玻璃大炮,很容易在编写脚本的地方出现问题,因此这里推荐使用linuxdeployqt进行打包。

linuxdeployqt打包基本流程(以centos7.5为例)

1.首先检出linuxdeployqt源码

git clone https://github.com/probonopd/linuxdeployqt-git --depth=1

执行此条命令前确保已经安装了git 并且保证网络连接

安装git:centos:sudo yum install git

unbantu:sudo apt install git

2.检出源码后进入源码文件夹并打开终端

执行qmake(确保已经安装了qmake和make)

make

会在当前目录下生成一个文件名为bin的文件夹

进入bin目录下

正常情况会生成一个linuxdeployqt的可执行文件

将这个可执行文件拷贝一份到usr/local/bin下方便当作命令使用

3.检查是否安装完成

完成上述步骤在终端输出linuxdeployqt

正常情况会输出以上信息

打包过程

1.用Qt Creator中打开你的Qt源码,在项目于一栏下勾选show build

在左下角切换至Release,编译之后会在你show build下生成你的Release包,进入包中找到Release下的可执行文件。

2.新建一个文件夹,将上一步拷贝的Release下的可执行文件放到此处

执行下面步骤前确保你安装了完整的Qt库

3.根据配置需求文档中的最后一步配置好环境变量
export PATH=/home/betterjason/Qt/5.15.2/gcc_64/bin:$PATH

export LD_LIBRARY_PATH=Qt安装路径/Qt/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH

export QT_PLUGIN_PATH=Qt安装路径/Qt/5.15.2/gcc_64/plugins:$QT_PLUGIN_PATH

export QML2_IMPORT_PATH=Qt安装路径/Qt/5.15.2/gcc_64/qml:$QML2_IMPORT_PATH

注!!!!:/home/brtterjason/为Qt安装路径 此处应该与本机Qt安装路径一致
   Qt/5.15.2/ 此处以实际命名为准,若目前工程所属版本为Qt5.7.1 此处应为Qt5.7.1/5.7/

4.使用linuxdeployqt打包,具体步骤为下

linuxdeployqt app -verbose2(不建议使用此命令,很容易出现缺少库文件的情况

linuxdeployqt app -appimage

此处app为你的项目的可执行文件名

上述步骤执行完就是这个Qt项目在Linux下的打包

This application failed to start because it could not find or load the qt platform plugin “xcb"

正常步骤

终端输入 export QT_DEBUG_PLUGINS=1

这一步可以展示程序详细的运行步骤

这样就可以很清楚看到少了哪个库文件

然后在QT的lib里找到这个文件放到程序同级目录即可

但是这个方法不保险,因为每次缺少的库可能不同

 终极解法

使用linuxdeployqt app -appimage

然后将Qt5.7/5.7/gcc_64/下的所有文件拷一份到项目同级目录即可

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值