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 “”的问题完美解决,程序正常启动运行了。
————————————————
版权声明:本文为CSDN博主「lusanshui」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lusanshui/article/details/84988017

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值