在Ubuntu18上用 QT5 写GUI应用,结果报错:This application failed to start because it could not find or load the Qt platform plugin “xcb” in “”.折腾了一下,终于搞定。
报错的原因是有的Qt5的库没有包含在打包的应用中,如果能找到依赖的库,并让制定的库包含在应用的搜索路径中,即既要给出库,也要让应用知道你的库在哪里。
假设原来运行QT的是甲主机,自己编写的QT应用的移植到乙主机上。
- 我们先解决让自己的程序知道库放在哪里的问题(Ubuntu系统):
在Ubuntu系统下,把库的路径依次加在乙主机的
/etc/ld.so.conf
文件后,就像
第一行是本来有的,后面两行是我自己添加的库路径。下面就把链接库放在上面的文件里。我的应用在/ttt/Release
下。
然后,运行
ldconfig
重要!!!!!!!!
使设置生效!
-
寻找依赖的库
利用ldd
命令
比如我的应用叫做BigDataEditor
,那就执行ldd BigDataEditor
。
具体的有时间再来补充,可以参考
https://blog.csdn.net/u010168781/article/details/81458272 -
把甲主机的
platforms/
文件夹(在/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
)复制到和应用同一级的目录,我的就在/ttt/Release/
下 -
在乙主机调试,运行
export QT_DEBUG_PLUGINS=1
,再运行程序,逐步根据提示添加库,一般库都在甲主机的/usr/lib/x86_64-linux-gnu/
文件夹下。比如一个调试界面:
错误的地方在下面
4ubmV0L2dlbmdsaTIwMTc=,size_16,color_FFFFFF,t_70)错误提示在括号里(libxkbcommon-x11.so.0),缺少这个库,在甲主机的/usr/lib/x86_64-linux-gnu/
路径下寻找相应的库,不停添加依赖的库,直到不报错为止。 -
我还运行过
sudo apt install xcb
,安装xcb调试器,刚开始不能显示调试结果,就告诉你有错。