qt5.9 linux 打包,在Ubuntu上打包Qt工程,并实现其安装和使用。

系统环境:Ubuntu18.04

Qt版本:5.9.4

工程源码:https://github.com/seer-robotics/SeerTCPTest

操作步骤:

1、用Qt的release模式编译工程文件(SeerTCPTest,即SeerTools,下文统称为SeerTools)。

可点击Qt界面上左侧的【项目】-->【构建设置】-->【概要】-->【构建目录】-->【浏览】找到对应的路径和文件。

我这边编译出来是共享库,不是可执行文件,如下图所示。

df71dd594b3e61f3fdc0de7c5cb0c625.png

2、用脚本执行编译好的文件。

2.1 创建如下所示的目录结构,在整理以来库的时候还需要做部分添加。

demo

project

DEBIAN // 存放control文件,用于记录安装包相关信息的配置文件

usr

local

lib

SeerTools // 存放程序文件

share

applications // 存放 *.desktop 文件

icons // 存放软件的图标 *.png

2.2 把编译好的SeerTools文件和需要的数据库文件Roboshop.db复制到SeerTools目录下。

2.3 在SeerTools目录下创建脚本文件SeerTools.sh,指令如下:

f5abcde1f94a8b73238628267d754d7d.png

然后在文件夹下双击此文件,并写入如下内容:

#!/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 "$@"

2.4 修改SeerTools.sh的文件属性为可执行文件,在SeerTools.sh所在的目录下,输入如下指令:

8bcc6b83f39c78800b17b23b652dcfd5.png

如果提示权限不够,则在前面加上 sudo,即:sudo chmod +x SeerTools.sh,然后输入用户密码即可。

2.5 执行SeerTools.sh,在SeerTools.sh所在目录下,输入如下指令:

45a0ef4e8fb5a62a1e0ca60fd1b4e826.png

如果权限不够,则在前面加上 sudu 。

然后就会弹出软件的界面,如下图所示。

cfd6636a7c8dcd2cee918d6b7ef0a9bc.png

3、提取并整理依赖库。(建议在非中文的用户路径下)

3.1 提取依赖库。

在SeerTools目录下创建文件copylib.sh,用于提取依赖库的完整路径,并修改其属性为可执行文件,指令如下:

5085813d1638ac4064839efb49391f92.png

3e81dae0a5aaace662c13e28a2be18e9.png

其内容为:

#!/bin/sh

if [ ! -d "./dep" ]; then

mkdir ./dep

else : then

rm -rf ./dep

mkdir ./dep

fi

ldd ./SeerTools |cut -d ">" -f 2|grep lib|cut -d "(" -f 1|xargs tar -chvf ./dep/SeerTools.tar

echo "ok"

输入如下指令,提取软件所需的依赖库。

05192ab5744c1aa8fd1dfafbeda420ae.png

然后当前路径下就会多出一个dep文件夹。

3.2 整理依赖库。

解压dep文件夹中的压缩包,并按照执行copylib.sh时打印的路径,整理依赖库。

004cb88f346ffbaf52cf2895c482c488.png

按照上图所示的路径,在usr路径下添加新的lib路径,并将提取的home路径下的依赖库复制到此处。

然后将提取出来的usr路径下的依赖库也复制到对应的位置。

3.3 此外,需要将Qt的libqxcb.so(文件路径为:Qt5.9.4/5.9.4/gcc_64/plugins/platforms)及其相关依赖也添加到project对应的路径下,否则系统会提示缺少“xcb”。

在SeerTools路径下添加platforms路径,并将libqxcb.so复制到此处,然后提取并整理,步骤同上。

如果在其他电脑上运行时,提示缺少“xcb",肯定是没有将libqxcb.so的依赖库整理完整,可在报错的电脑上,通过ldd查看文件的相关依赖,以及这些依赖的路径。例如:ldd libqxcb.so。然后将添加缺少的依赖库即可。

我之前遇到的情况是,按照网友的提示,添加了libQt5XcbQpa.so.5,但是提示缺少”xcb“,ldd之后才发现,还缺少libQt5DBus.so.5,补上之后就能正常运行了。

3.4 由于此工程有用到数据库,因此需要添加数据库驱动。之前由于没有添加数据库驱动,以至于界面上的数据没有完全显示。

在SeerTools路径下添加sqldirvers路径,并将路径Qt5.9.4/5.9.4/gcc_64/plugins/sqldrivers下的libqsqlite.so(因为用的是sqlite的数据库)复制到此路径下,然后提取并整理,步骤同上。

4、编写相关的配置文件。(control,*.desktop)

4.1 编写control文件

在DEBIAN路径下创建control文件,指令如下:

86b58339c044f6560290af1520eb8fac.png

然后在文件夹中双击control文件,并添加如下所示的内容:

package: SeerTools

version: 1.0.0

architecture: amd64

maintainer: Seer-robotics

description: SeerTools for Robokit NetProtocol API

------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除 --------

package 表示安装包的名字

version 表示次安装包的版本

architecture 当前系统的架构的信息

maintainer 此安装包的维护者

description 此安装包的描述

4.2 编写SeerTools.desktop文件

在applications路径下创建SeerTools.desktop文件,并添加可执行权限,指令如下:

dff383c807d3d37e7f5f8a2878ca5afb.png

5f0968f56fc169f184bef7a3df0352ef.png

然后添加以下内容:

[Desktop Entry]

Encoding=UTF-8

Name=SeerTools

Exec=/usr/local/SeerTools/SeerTools.sh

Icon=/usr/local/SeerTools/SeerTools.png

Comment="released_on_2019_02_25"

Terminal=false

Type=Application

------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除 --------

Exec 目标文件(完整路径)

Icon 图标文件(完整路径)末尾不能有空格,否则将会导致无法加载图标

然后找一张png格式的图片文件,重命名为SeerTools.png之后复制到icons路径下。

最终的文件目录如下:

demo

project

DEBIAN

control

usr

lib

libs.......

local

lib

libs.......

SeerTools

platforms

libqxcb.so

dirver

libqsqlite.so

share

applications

SeerTools.desktop

icons

SeerTools.png

5、打包(制作安装包)。

在 demo 路径下输入如下指令:

dpkg -b project/ SeerTools_linux_amd64.deb

40da838a6d459c4f793bb828930b333f.png

如果权限不够,则在加上 sudu

一段时间后,在demo路径下就会增加一个 SeerTools_linux_amd64.deb的文件

6、安装、卸载及运行

6.1 安装。

双击SeerTools_linux_amd64.deb文件,点击安装,并输入用户密码即可。

6.2 卸载。

安装完成之后,点击安装界面上的移除,然后输入用户密码即可。

也可通过指令卸载安装的程序,如下图所示:

891c0da922245c89e9938e8c36b1f569.png

然后输入用户密码即可

1d2bea363f6fb4849d101826aa74d69a.png

6.3 运行。

找到SeerTools.desktop文件,文件路径为:/usr/share/applications/SeerTools.desktop

如果SeerTools.desktop没有可执行权限,给SeerTools.desktop文件增加执行权限:

e44d1d3c595d1875cad6db270aae0d98.png

然后在文件夹中双击SeerTools.desktop文件,即可运行程序,运行结果如下图所示。

abbb717364f1f7cc8e7faa4b3fdb0ee5.png

尝试过用linuxdeployqt打包,但是在Ubuntu18上运行不了,尝试过解决,但是失败了。

感谢其他作者提供的参考文章。

通过脚本启动:https://blog.csdn.net/z3512498/article/details/64922180

制作桌面启动方式:https://blog.csdn.net/qq_22374265/article/details/80081932

打包:https://blog.csdn.net/yangbingzhou/article/details/33318625

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值