Qt工作笔记-如何打包我们用 Qt 写的软件 - Linux 篇
个人补充下,这里打包的机器和部署都一个内核,最好是一个厂家的。
原文地址:
https://zhuanlan.zhihu.com/p/49919048
概述
这部分内容其实官方文档已经有介绍,包括三部分内容:“Qt for Linux/X11 - Deployment”、“Qt for Windows - Deployment”和“Qt for MacOS - Deployment”。看起来还是很简单的,如果不想看官文的话,我以自己的实际项目为例,说明如何在 Linux 下打包我们的程序。
本文目录结构:
一、准备两个脚本
- ldd.sh脚本
- hubeihdbtoexcel.sh脚本
- 给两个脚本加权限
二、打包过程
- 1.添加程序依赖库
- 2.添加 Qt 相关依赖库
三、验证
某个湖北现场需要将数据库中的数据输出为Excel文件。现场机器环境为Qt4,由于导出Excel文件的第三方库需要在Qt5环境下编译,因此该教程的目的是在现场机器不安装Qt5的情况下能正常运行Qt5编译的程序。
程序名:hubeihdbtoexcel
一、准备两个脚本
- ldd.sh脚本
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
docp "$Variable" $LibDir
done
- hubeihdbtoexcel.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 "$@"
给这两个脚本加权限
sudo chmod 777 ldd.sh
sudo chmod 777 hubeihdbtoexcel.sh
二、打包过程
打包过程分为:添加程序依赖库和Qt依赖库。
- 添加程序依赖库
(1)新建一个空的文件夹,用于存放程序及其动态库。例如“ExportToExcel文件夹”;
(2)将ldd.sh脚本复制到编译目录,如“build-hubeihdbtoexcel-Desktop_Qt_5_5_1_GCC_32bit-Release”;
(3)执行“./ldd.sh hubeihdbtoexcel”,会在当前目录生成lib文件夹。其中存放着运行hubeihdbtoexcel所依赖的库文件;
(4)将lib文件夹中的所有文件复制到第1步新建的文件夹“ExportToExcel文件夹”中。至此,就可以删除生成的lib文件夹和ldd.sh脚本了
2. 添加 Qt 相关依赖库
(1)将ldd.sh脚本复制到Qt5安装目录的platforms文件夹中;
(2)执行“./ldd.sh libqxcb.so”,将生成的lib文件夹中的所有文件拷贝到“ExportToExcel文件夹”中。有些库可能重复,点击“替换”即可。执行完该步骤后就可以删除生成的lib文件夹和ldd.sh脚本了;
(3)返回上一级,将platforms整个文件夹拷贝到“ExportToExcel文件夹”中,层级关系如下图;
(4)该步骤为可选步骤。如果所编写的程序有操作数据库的动作,还需要将与platforms同级目录中的sqldrivers文件夹也拷贝到“ExportToExcel文件夹”中;
(5)最后将hubeihdbtoexcel.sh脚本拷贝到“ExportToExcel文件夹”中即可。然后将整个“ExportToExcel文件夹”压缩就可以在其他机器上解压缩后运行。
三、验证
(1)将压缩包解压;
(2)执行“./hubeihdbtoexcel.sh”,程序正常运行。
Qt工作笔记-如何打包我们用 Qt 写的软件 - Linux 篇相关推荐
- QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)
QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- QT学习笔记(二):QT MinGW 和 MSVC 编译方式
QT学习笔记(二):QT MinGW 和 MSVC 编译方式 Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是使用两种不同的编译器. 1.MSVC是指微软的VC编译器: 2.MingGW ...
- Qt开发笔记(一):Qt+FFmpeg开发环境搭建以及工程模板
原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/90 ...
- Qt工作笔记-在Graphics上写文本(QGraphicsSimpleTextItem与QGraphicsTextItem的基本使用)
查了下文档发现就这2个, 一个是QGraphicsTextItem,另外一个是QGraphicsSimpleTextItem 从官方对QGraphicsTextItem中的描述中可以看到: 这个QGr ...
- Qt工作笔记-Qt元对象系统解析【2合1】
博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...
- Qt工作笔记-使用QGraphicsItem加载图片并实现碰撞
因为要做一个游戏,在线只是一个知识点例子,作下笔记而已.只给出伪代码,游戏作玩,开源发布!!! 这里有2个知识点 一个是QGraphicsItem的绘图. 一个是QGraphicsItem的碰撞. 实 ...
- Qt工作笔记-使用hiredis连接及查询Redis
目录 基本概念 代码与实例 基本概念 前几天学了个java的,现在想搞个C++的,但在hiredis上发现了一个qt的.就准备直接用Qt来撸项目算了,毕竟Pro文件,比Makefile要好写多了,先来 ...
- Qt工作笔记-通过 对象树 或 delete this 释放对象
目录 背景 实例 背景 今天在写代码的时候,new出的界面,没有delete,因为是dialog,可以用exec() 把后面的界面阻塞掉,但个人并不喜欢这样,毕竟觉得强扭的瓜不甜!不想让后面的那个界面 ...
最新文章
- pycharm执行python程序报错ImportError: DLL load failed: torchvision找不到指定的程序
- 仿Twitter的公告效果
- Linux性能监测工具Nmon介绍及其使用
- Visual Studio Code搭建TypeScript开发环境
- php怎么看回调的异步通知的数据_php app支付宝回调(异步通知)详解
- python——函数 10、函数的嵌套
- CM: 使用ICF node实现对附件的读取
- IOS学习笔记七之KVC和Key路径
- 非一致性访存系统_Hibernate事实:访存策略的重要性
- 虚幻4毛发系统_虚幻引擎复活!苹果与Epic对决,有哪些游戏险些中枪?
- CentOS 7 利用Docker搭建禅道系统
- 1.8 编程基础之多维数组 04 错误探测 python
- 网站开发综合技术 HTML
- MySQL高可用--MGR入门(4)异常恢复
- python 关于main函数以及if __name__=='__main__'的理解
- 基于微服务的分布式自动化测试平台
- 生物图像处理软件_细胞分割
- SpringBoot中SpringMVC 整合启动嵌入式Tomcat 原理及源码解析
- 软件工程——数据流图
- Foo,getName题解分析
热门文章
- SQL Sever中SQL语句语法,适合初学者使用
- 进来,让BUG远离你!
- [视频]Google Chrome背后的故事
- 一步步Notepad变Word
- 第 6 节:前端面试指南 — React 篇(附面试题答案)
- 快来!前端君喊你加入快驾网智囊团
- laravel php7.2报错,laravel,php_运行php artisan serve时报错,laravel,php - phpStudy
- mysql normal like_MYSQL语句
- C++指针、this指针、静态成员
- 马上开课 | 临床基因组学数据分析实战助力解析Case,快速发表文章