当前位置: 首页 > news >正文

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的桌面双击即可打开应用程序。

相关文章:

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

Qt应用编译时选择release方式编译 目的:debug方式编译依赖的文件会多一些,同时文件大小还会很大。 Notice: 所有操作都是在当前用户下,如果是root账户,需要注意加上sudo,否则会因为权限问题提取依赖文件失败。 准备…...

初级JVM

1、对象在哪块内存分配? 数组和对象在堆内存分配;某些对象没有逃逸出方法,可能被优化为在栈上分配 2、谈谈 JVM 中的常量池 JDK 1.8 开始 字符串常量池:存放在堆中,包括 String 对象执行 intern() 方法后存的地方、…...

MySQL数据库 编程入门

目录 MySQL数据库数据类型 MySQL数据库命令执行 创建用户 创建删除库 创建删除表 MySQL数据库数据类型 MySQL数据库定义了多种数据类型,下面是一些常见的MySQL数据类型及其对应的C/C类型: 整数类型: TINYINT:有符号范围-1…...

6.golang函数

函数是执行特定任务的代码块。函数接受输入,对输入执行一些计算,然后生成输出。 函数声明 在 go 中声明函数的语法是: func name(parameter) (result-list){//body }函数声明以func关键字开头,后跟name(函数名)。在括号中指定参…...

软件可靠性测试常见的方法

“测试”一般是指“为了发现程序中的错误而执行程序的过程”,可靠的测试性是相对重要的,在部分产品开始的测试阶段,需要的就是可靠的测试性,机构,所以存在意义较大。但是在不同的开发阶段、对于不同的人员,…...

C/C++字节对齐

C/C字节对齐 C/C字节对齐1.G_PACKED2.1 pack(push)2.2 pack(1) 全部例子 C/C字节对齐 1.G_PACKED #ifdef __GNUC__#define G_PACKED( __Declaration__ ) __Declaration__ __attribute__((packed)) #else#define G_PACKED( __Declaration__ ) __pragma( pack(push,1)) __Decla…...

【Android知识笔记】性能优化专题(四)

App 线程优化 线程调度原理 任意时刻,只有一个线程占用CPU,处于运行状态多线程并发:轮流获取CPU使用权JVM负责线程调度:按照特定机制分配CPU使用权线程调度模型 分时调度模型:轮流获取、均分CPU时间抢占式调度模型:优先级高的获取,JVM采用Android线程调度 nice值:Proc…...

DC电源模块的散热措施

BOSHIDA DC电源模块的散热措施 DC电源模块的散热措施可以分为以下几种: 1. 增加散热器:在DC电源模块的电路板上增加散热片或散热器,通过增加散热面积和散热能力来提高散热效果。 2. 增加风扇:在散热器的基础上增加风扇&#xff…...

uniapp H5、小程序、APP端自定义不同运行环境(开发、测试、生产)、自定义条件编译平台、以及动态修改manifest.json值讲解

文章目录 前言一、自定义条件编译平台是什么?二、新增自定义条件编译平台三、动态设置服务器请求地址四、动态修改manifest.json1.根目录新增文件 modifyManifest.js2.vue.config.js引入modifyManifest.js 总结示例代码 前言 企业项目开发流程上一般都要配置多个运…...

centos 显卡驱动安装(chatglm2大模型安装步骤一)

1.服务器配置 服务器系统:Centos7.9 x64 显卡:RTX3090 (24G) 2.安装环境 2.1 检查显卡驱动是否安装 输入命令:nvidia-smi(显示显卡信息) 如果有以下显示说明,已经有显卡驱动。否则需要重装。 2.2 下载显卡驱动 第一步:浏览器输入https://www.nvidia.cn/Downloa…...

05_属性描述符

05_属性描述符 文章目录 05_属性描述符一、属性描述符是什么?二、属性描述符①:查看属性描述②:设置属性描述符③:案例01.代码实现02.代码实现(优化) 一、属性描述符是什么? 属性描述符的结构 在…...

vue day2

1、指令修饰符:.指明一些指令后缀,不同后缀封装不同处理操作 按键修饰符:keyup.enter v-model修饰符: v-model.trim:去首位空格 v-model.number:转数字 事件修饰符: 阻止事件冒泡&#xff1…...

四川劳动保障杂志社四川劳动保障编辑部四川劳动保障杂志2023年第10期目录

主题报道 四川抢抓“金九银十”招聘季多措并举稳就业促就业 举措频“上新” 金秋送岗忙 张玉芳; 2-5 法眼《四川劳动保障》投稿:cnqikantg126.com 筑牢长期护理保险基金安全防线 李科仲;赖晓薇; 6-7 调研 提升职业技能培训工作的举措 寇爵; 8-9 城乡…...

python数据类型

int 整型 i 1str 字符串 name1Emliy name2"你好" content""" Emily:你好! """ test你最"帅" test2"你最帅"float 浮点类型 height182.5 weight45.3bool 布尔类型 f1True f2Falselist …...

大数据-之LibrA数据库系统告警处理(ALM-37004 Datanode主备不同步或者断连)

告警解释 当DN主实例与DN备实例连接异常时,产生该告警。 告警属性 告警ID 告警级别 可自动清除 37004 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Instance 产生…...

带你用uniapp从零开发一个仿小米商场_2.创建空白项目及公共样式引入

创建空白项目 打开uniapp 点击新建->项目 如下, 是编辑你项目的名字的地方是你项目存放地址,可以点击浏览器去文件管理里面选地址是模板选择,这里选择默认模板就好是一些其他选择比如uvue能让你项目在编译成软件时运行更快,unicloud能让你用js写后端,且直接就是云开发,g…...

1144. 连接格点,Kruskal算法,二维矩阵压缩为一维

有一个 m 行 n 列的点阵,相邻两点可以相连。 一条纵向的连线花费一个单位,一条横向的连线花费两个单位。 某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。 输入格式 第一行输入两个正整数 m 和 n。 以下若…...

C++ : 友元(未完结)

不能从外部访问类的私有数据成员和方法,但这条规则不适用于友元类和友元函数。要声明友元 类或友元函数,可使用关键字 friend,通过让函数成为类的友元,可以赋予该函数与类的成员函数 同的访问权限。 生活中你的家有客厅 (Public)…...

Nginx 服务器 SSL 证书安装部署

操作场景 本文档以证书名称 menglinfeng.top 为例。 Nginx 版本以 nginx/1.18.0 为例。 当前服务器的操作系统为 CentOS 7,由于操作系统的版本不同,详细操作步骤略有区别。 安装 SSL 证书前,请您在 Nginx 服务器上开启 “443” 端口&#xf…...

GC9118S低压 5V 全桥驱动芯片,内置过温保护,低电流睡眠模式,可替代TMI8118

GC9118S 是一款低压 5V 全桥驱动芯 片,为摄像机、消费类产品、玩具和其他低 压或者电池供电的运动控制类应用提供了集 成的电机驱动解决方案。 GC9118S 能提供高达 1.1A 的持续输出 电流。可以工作在 2~6V 的电源电压上。 GC9118S 具有 PWM ( IN/…...

OpenClaw+Qwen3-14b_int4_awq:电商商品描述自动生成器

OpenClawQwen3-14b_int4_awq:电商商品描述自动生成器 1. 为什么需要自动化商品描述生成 作为一名电商运营人员,我每天都要处理大量商品上架工作。最让我头疼的就是为不同语言市场的同一款产品撰写多版本描述——不仅耗时耗力,还经常出现风格…...

Linux 的 link 命令

Linux 中的 link 命令用于创建硬链接(hard link),这是 Linux/Unix 文件系统中的一种特殊文件连接方式。与符号链接(symbolic link)不同,硬链接直接指向文件的 inode,而不是通过路径名引用。 命…...

micro-moustache:嵌入式轻量模板引擎

1. micro-moustache:面向嵌入式系统的轻量级无逻辑模板处理器1.1 设计定位与工程价值micro-moustache 是专为资源受限微控制器(如 Arduino、ESP32、STM32 等)设计的极简 Mustache 模板引擎实现。其核心设计哲学是“功能够用、内存可控、接口直…...

CCG Workflow Agent Teams使用指南:如何利用并行AI团队加速复杂项目开发

CCG Workflow Agent Teams使用指南:如何利用并行AI团队加速复杂项目开发 【免费下载链接】ccg-workflow 多模型协作开发系统 - Claude 编排 Codex 后端 Gemini 前端,28 个命令覆盖开发全流程,一键安装零配置 项目地址: https://gitcode.c…...

思科报告:无线网络成企业战略增长引擎,AI驱动投资激增

企业正面临连接需求和人工智能驱动转型的拐点,而无线网络的战略性投资正成为企业成功的催化剂,在多个业务维度同时带来可衡量的回报。这是思科最新发布的研究报告得出的结论。在首份《2026年无线网络状态》全球报告中,这家IT和网络巨头调查了…...

PyTorch 2.8镜像生产环境:Nginx+FastAPI+PyTorch视频生成服务上线指南

PyTorch 2.8镜像生产环境:NginxFastAPIPyTorch视频生成服务上线指南 1. 镜像环境概述 PyTorch 2.8深度学习镜像是一个专为生产环境优化的完整解决方案,特别适合需要稳定运行视频生成服务的场景。这个镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化&am…...

全域数学理论宇宙本源正式宣言(乖乖数学)

全域数学理论宇宙本源正式宣言 宣告日期:公元二〇二六年四月二日 宣告事由:庄严确立全域数学理论之宇宙本源核心定论,昭示宇宙根本运行法则,正式向世间宣告本理论之终极核心要义 序言 宇宙之本体、时空之本质、物质之根源&#xf…...

别再只会画基础地图了!用R语言ggplot2绘制带采样点的科研级世界地图(附完整代码与配色方案)

科研级世界地图可视化:用R语言打造专业采样点分布图 第一次投稿时,审稿人给我的反馈里有一行刺眼的批注:"Figure 1的地图可视化质量不符合本刊标准"。那一刻我才意识到,在学术交流中,数据呈现的美观度与专业…...

剪映API技术解析:如何通过代码驱动实现视频剪辑自动化与效率革命

剪映API技术解析:如何通过代码驱动实现视频剪辑自动化与效率革命 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在视频内容创作进入工业化生产的今天,传统手动…...

如何解决微信QQ语音无法播放?Silk音频转换工具让跨设备播放不再难

如何解决微信QQ语音无法播放?Silk音频转换工具让跨设备播放不再难 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion su…...