Ubuntu22.04下打包发布Qt5.15应用程序的方法

Qt应用编译时选择release方式编译

目的:debug方式编译依赖的文件会多一些,同时文件大小还会很大。

Notice: 所有操作都是在当前用户下,如果是root账户,需要注意加上sudo,否则会因为权限问题提取依赖文件失败。

准备

  • 在Ubuntu当前用户目录下创建一个目录

    gary@gary-host:~$ mkdir QtAppDeploy

  • 创建脚本ldd_copy.sh,用于拷贝应用的关联文件

    #!/bin/sh
    exe="yourdemoname" #你需要发布的程序名称
    des="/home/gary/QtAppDeploy" #创建文件夹的位置
    deplist=(ldd exe | awk '{if (match(3,"/")){ printf("%s "),3 } }')
    cp deplist des

  • 创建运行脚本yourdemoname.sh,最终用来运行你的应用程序

    #!/bin/sh
    appname=basename $0 | sed s,\.sh$,,
    dirname=dirname $0
    tmp="{dirname#?}" if [ "{dirname%tmp}" != "/" ]; then dirname=PWD/dirname fi LD_LIBRARY_PATH=dirname
    export LD_LIBRARY_PATH
    dirname/appname "$@"

  • 修改脚本权限为可执行

    chmod +x ldd_copy.sh
    chmod +x yourdemoname.sh

提取依赖包

提取应用程序的依赖包
  • 将ldd_copy.sh复制到应用程序的编译目录下:

    $ cp ./ldd_copy.sh home/gary/yourprojectname/build-yourdemoname-Desktop_Qt_5_15_2_GCC_64bit-Release

  • 执行脚本提取依赖包到QtAppDeploy

    $ ./ldd_copy.sh yourdemoname

提取QT platform平台xcb的依赖库文件
  • 将上面的ldd_copy.sh复制到QT的安装目录下的plugins/platforms,比如:

    $/home/gary/Qt/5.15.2/gcc_64/plugins/platforms

  • 将脚本里的exe="yourdemoname" 改为如下:

    exe="libqxcb.so"

  • 执行脚本,将会把xcb依赖库拷贝到你的QtAppDeploy目录下

  • 将整个platforms文件夹复制目录QtAppDeploy中,即在QtAppDeploy目录下多一个platforms文件夹

提取其他需要的依赖文件
  • 支持不同格式图片的库文件

  • 支持中文输入的库文件
    将下面两个插件对应的文件夹复制到QtAppDeploy目录下:

    /home/gary/Qt/5.15.2/gcc_64/plugins# ls imageformats、platforminputcontexts /home/gary/Qt/5.15.2/gcc_64/plugins#cp imageformats platformimputcontexts /home/gary/QtAppDeploy -ar

见证奇迹

在创建的QtAppDeploy目录下,运行yourdemoname.sh, 就可以看到yourdemoapp应用程序运行起来了, cheers~~

复制代码
$QtAppDeploy# ./yourdemoname.sh

设置双击启动应用程序,并添加图标

Ubuntu22.4的桌面图标在/usr/share/applications中,在改目录下创建"双击启动应用程序"的脚本如下:(更多介绍可以参考目录下自带的桌面启动程序的脚本,以葫芦画瓢)

复制代码
$/usr/share/applications# sudo vim yourdemoname.desktop
[Desktop Entry]
Version=4.0
Type=Application
Name=  TestXX  #程序在桌面的名称,可以随便写
Comment=QT Create #注释,可以随便写
Exec=/home/gary/QtAppDeploy/yourdemoname.sh %F #应用程序的路径
Icon=/home/gary/QtAppDeploy/yourdemo.png #桌面应用程序图标
Terminal=false
StartupNotify=true
Categories=Application

最后使用ubuntu22.04的文件管理器gedit打开/usr/share/applications,然后右击刚才创建的yourdemoname.desktop,选择"Copy to...",将她复制到桌面目录(/home/gary/Desktop)即可,然后在Ubuntu22.04的桌面双击即可打开应用程序。

相关推荐
liminla!1 分钟前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法
tongyiixiaohuang7 分钟前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
中科三方11 分钟前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
沫璃染墨1 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
大侠归来1 小时前
常用 MySQL 分库分表方案详解
数据库·mysql
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
kingx32 小时前
Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复
数据库·windows·提权·应急响应·加固
蓝祁子yoky2 小时前
Qt学习日记 Day13:网络编程(一)-TCP基础与Socket实战
网络·qt·学习
xiaogai_gai2 小时前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉