个人补充下,这里打包的机器和部署都一个内核,最好是一个厂家的。

原文地址:

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. 添加程序依赖库

(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 篇相关推荐

  1. QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

    QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...

  2. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  3. QT学习笔记(二):QT MinGW 和 MSVC 编译方式

    QT学习笔记(二):QT MinGW 和 MSVC 编译方式 Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是使用两种不同的编译器. 1.MSVC是指微软的VC编译器: 2.MingGW ...

  4. Qt开发笔记(一):Qt+FFmpeg开发环境搭建以及工程模板

    原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/90 ...

  5. Qt工作笔记-在Graphics上写文本(QGraphicsSimpleTextItem与QGraphicsTextItem的基本使用)

    查了下文档发现就这2个, 一个是QGraphicsTextItem,另外一个是QGraphicsSimpleTextItem 从官方对QGraphicsTextItem中的描述中可以看到: 这个QGr ...

  6. Qt工作笔记-Qt元对象系统解析【2合1】

    博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...

  7. Qt工作笔记-使用QGraphicsItem加载图片并实现碰撞

    因为要做一个游戏,在线只是一个知识点例子,作下笔记而已.只给出伪代码,游戏作玩,开源发布!!! 这里有2个知识点 一个是QGraphicsItem的绘图. 一个是QGraphicsItem的碰撞. 实 ...

  8. Qt工作笔记-使用hiredis连接及查询Redis

    目录 基本概念 代码与实例 基本概念 前几天学了个java的,现在想搞个C++的,但在hiredis上发现了一个qt的.就准备直接用Qt来撸项目算了,毕竟Pro文件,比Makefile要好写多了,先来 ...

  9. Qt工作笔记-通过 对象树 或 delete this 释放对象

    目录 背景 实例 背景 今天在写代码的时候,new出的界面,没有delete,因为是dialog,可以用exec() 把后面的界面阻塞掉,但个人并不喜欢这样,毕竟觉得强扭的瓜不甜!不想让后面的那个界面 ...

最新文章

  1. pycharm执行python程序报错ImportError: DLL load failed: torchvision找不到指定的程序
  2. 仿Twitter的公告效果
  3. Linux性能监测工具Nmon介绍及其使用
  4. Visual Studio Code搭建TypeScript开发环境
  5. php怎么看回调的异步通知的数据_php app支付宝回调(异步通知)详解
  6. python——函数 10、函数的嵌套
  7. CM: 使用ICF node实现对附件的读取
  8. IOS学习笔记七之KVC和Key路径
  9. 非一致性访存系统_Hibernate事实:访存策略的重要性
  10. 虚幻4毛发系统_虚幻引擎复活!苹果与Epic对决,有哪些游戏险些中枪?
  11. CentOS 7 利用Docker搭建禅道系统
  12. 1.8 编程基础之多维数组 04 错误探测 python
  13. 网站开发综合技术 HTML
  14. MySQL高可用--MGR入门(4)异常恢复
  15. python 关于main函数以及if __name__=='__main__'的理解
  16. 基于微服务的分布式自动化测试平台
  17. 生物图像处理软件_细胞分割
  18. SpringBoot中SpringMVC 整合启动嵌入式Tomcat 原理及源码解析
  19. 软件工程——数据流图
  20. Foo,getName题解分析

热门文章

  1. SQL Sever中SQL语句语法,适合初学者使用
  2. 进来,让BUG远离你!
  3. [视频]Google Chrome背后的故事
  4. 一步步Notepad变Word
  5. 第 6 节:前端面试指南 — React 篇(附面试题答案)
  6. 快来!前端君喊你加入快驾网智囊团
  7. laravel php7.2报错,laravel,php_运行php artisan serve时报错,laravel,php - phpStudy
  8. mysql normal like_MYSQL语句
  9. C++指针、this指针、静态成员
  10. 马上开课 | 临床基因组学数据分析实战助力解析Case,快速发表文章