Qt 应用程序在统信UOS(arm平台)上打包发布

一、前言

最近在做Qt windows程序在统信uos电脑(arm64)上适配的需求,经过一个多星期的努力,程序可以运行起来,到了打包发布环节,产品经理希望用户可以像windows平台那样,可以一键安装程序,并且桌面生成快捷方式。

经过不断地摸索,最后终于实现了,现在把uos平台程序打包发布的过程记录下来,供大家参考!

二、linuxdeployqt下载安装

windows系统有自动拷贝依赖的工具windeployqt,而linux系统也有个类似的工具,叫linuxdeployqt,uos系统是arm平台,也可以用linuxdeployqt工具拷贝程序依赖库。

1、下载安装linuxdeployqt

如果是linux平台的朋友,可以直接下载已经编译好的linuxdeployqt-x86_64.AppImage,我在uos本也想直接下载这个安装,但是在安装的过程中会报格式错误,所以,uos平台的,还是需要下载源码,自己编译安装。

如果是linux平台,可以只能下载编译好的应用程序文件:

https://github.com/probonopd/linuxdeployqt/releases
在这里插入图片描述
下载完成之后,修改一下名字:

mv linuxdeployqt-6-x86_64.AppImage linuxdeployqt

修改执行权限:

chmod 777 linuxdeployqt

再把这个可执行文件扔进/usr/local/bin目录,这样,我们就可以在其他目录访问了

mv linuxdeployqt /usr/local/bin
如果是uos系统,需要源码编译安装
源码下载:https://github.com/probonopd/linuxdeployqt
下载完成后,屏蔽版本信息:

修改源码,去掉版本检查,这个一步不做会导致打包输出错误的信息:
下载完成之后,修改文件夹下 tools/linuxdeployqt/main.cpp
屏蔽代码如下:

        /*if (strverscmp (glcv, "2.28") >= 0) {
            qInfo() << "ERROR: The host system is too new.";
            qInfo() << "Please run on a system with a glibc version no newer than what comes with the oldest";
            qInfo() << "currently still-supported mainstream distribution (Ubuntu Bionic), which is glibc 2.27.";
            qInfo() << "This is so that the resulting bundle will work on most still-supported Linux distributions.";
            qInfo() << "For more information, please see";
            qInfo() << "https://github.com/probonopd/linuxdeployqt/issues/340";
            return 1;
        }*/
源码编译:

用Qt creater 打开 tools/linuxdeployqt/linuxdeployqt.pro
选择Release模式,进行编译,编译完成之后,在tools 同级目录下,会生成bin目录,bin目录里会生成可执行文件linuxdeployqt

将linuxdeployqt拷贝到/usr/local/bin:

sudo chmod linuxdeployqt
sudo -p linuxdeployqt /usr/local/bin/
测试是否安装成功

终端输入:

linuxdeployqt --version

如果显示版本信息,说明linuxdeployqt 安装成功。

三、利用linuxdeployqt拷贝依赖文件

这之前这命令之前,你要先配置qt的环境变量,
终端输入vim ~/.bashrc命令,修改 .bashrc 文件,在文件末尾追加以下内容,其中/home/zlkj/technology/5.9.7是我的Qt安装路径,大家要用自己的路径代替:

#add QT ENV
export PATH=/home/zlkj/technology/5.9.7/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/home/zlkj/technology/5.9.7/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/home/zlkj/technology/5.9.7/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/zlkj/technology/5.9.7/gcc_64/qml:$QML2_IMPORT_PATH

生效配置:

source ~/.bashrc

测试qt环境变量配置是否生效:查看qmakea版本号

qmake -v

设置成功之后:
新建文件夹,最好是你的应用程序命名
拷贝你要打包的应用程序的执行文件到该文件夹下:
然后执行命令:

linuxdeployqt XXXX -appimage

XXX: 为可执行程序名字

等待命令执行完毕,如果终端报错如下,可忽略,如果是其他问题,根据实际问题具体解决:
在这里插入图片描述
如果命名执行成功之后,你会看到目录下会多几个文件夹及文件,lib目录存放应用程序的依赖,然后你可以把程序依赖其他动态库也放到lib目录下。
可以通过 ldd xxx命令查看依赖的动态库

最后把应用程序依赖的其他文件拷贝到当前文件夹下
qml依赖库:放在qml文件夹下
所用到的插件:放在plugins文件夹下

然后双击应用程序,或者AppRun测试程序是否可以正常运行
自此,利用linuxdeployqt进行程序的打包发布就完成了。

四、打包成deb安装包

利用linuxdeployqt打包的程序是一个文件夹的形式,用户进入文件夹找到可执行程序或者运行脚本才可以启动程序,对于用户体验不够友好,那有没有像windows平台那样,直接双击就可以安装,并且会在桌面生成快捷方式的呢? 答案是有的,那就是uos官方提供的*.deb的形式
我们下篇详细介绍~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值