编译QT安装包移植新linux环境问题总结

QWidget移植

在ubuntu用QTCreater编译了一个简单的发布包myDemo,后移植到另一个ubuntu,由于缺少依赖库,产生各种问题,现在做个记录,将问题记录下来,这里要感谢这个博客https://blog.csdn.net/xujianjun229/article/details/119454525。

一开始一开始程序会缺少报缺少依赖库,如下:在这里插入图片描述
这是由于系统环境变量默认没有指向应用程序的发布包路径导致找不到依赖,此时需要打开terminal,输入如下命令配置临时环境变量。

export LD_LIBRARY_PATH='/home/xu/Desktop/MyPublish':$LD_LIBRARY_PATH

这个只在终端没关闭的时候有效,关闭了则环境变量消失。
配置了环境变量后,会报错:
qt.qpa.plugin: Could not find the Qt platform plugin “xcb” in “”
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

这个时候可以打开调试模式,查看程序的执行过程,分析是哪部分缺失。终端命令如下:

export QT_DEBUG_PLUGINS=1

这个时候在执行
在这里插入图片描述
提示在程序的执行目录下,企图加载platforms的相关库,以打印相关的库调用信息,但是这里并没有相关打印。是因为当前缺少platforms目录的库文件导致。
到开发环境电脑上找platforms文件夹,我这边是lib文件夹,拷贝到执行程序的目录下
再接着运行会显示具体的缺失库信息
*Got keys from plugin meta data (“xcb”)
Cannot load library /home/rdd/pp/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version Qt_5_PRIVATE_API’ not found (required by /home/rdd/pp/platforms/libqxcb.so)) QLibraryPrivate::loadPlugin failed on “/home/rdd/pp/platforms/libqxcb.so” : “Cannot load library /home/rdd/pp/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: versionQt_5_PRIVATE_API’ not found (required by /home/rdd/pp/platforms/libqxcb.so))”
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, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
缺失库文件:libQt5XcbQpa.so.5。到开发环境lib文件夹下找相应的依赖库即可。
最后执行./myDemo,就可以运行了

“Cannot mix incompatible Qt library with this library”,其中0x50b03指qt5.11.3,0x50e02指qt5.14.2,意思是5.14.2版本的库使用了5.11.3版本的库,冲突,使用ldd libqxcb.so的依赖库,可以发现具体那个库冲突。
在这里插入图片描述
上述结果中可以看出libQt5DBus.so.5同样使用的是系统自带的库,需要使用qt安装目录下的库,在/home/uos/Qt5.14.2/5.14.2/gcc_64/lib下,拷贝到EClient下即可,注意需要做个软链接或者直接修改名称。再次运行ldd libqxcb.so,可以看出已经使用了拷贝的库。再次运行./可执行文件名称,程序可以正常启动

widget背景图不能显示的问题解决方案

问题描述:由于我采用paintEvent方法里painter.drawImage画图方式,导致背景图一直显示不了,其他按钮都正常显示,移植新 环境./app运行导致背景图无法显示
解决方案(待优化):
将开发环境下(/home/xzw/Qt5.14.2/5.14.2/gcc_64)的文件夹lib,plugins,qml拷贝到可执行程序包下,配置环境变量运行即可,具体还不知道是因为少了啥文件,所以选择全部拷贝。

QML移植

拷贝编译器安装环境下的qml文件夹和plugins文件夹,配置如下环境变量

#!/bin/bash
export LD_LIBRARY_PATH=/app/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/app/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/app/qml:$QML2_IMPORT_PATH

问题1:
WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed.
[9242:9242:0426/160934.605305:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
*
这是代码的问题,再main函数里面加入代码

    QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
    QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);

问题2:
[4709:4709:0426/165143.451041:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

再运行命令后加入–no-sandbox

sudo ./EPoliceWork --no-sandbox

问题3:
qml module “QtQuick“ is not installed
在这里插入图片描述
把qt 安装目录下的qml模块相关的库。将Qt目录下qml 文件夹拷贝到 运行目录下即可

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值