【Qt】11.Linux下,Qt程序打包

目录

获取Release模式下的可执行文件

打包的目录结构搭建

安装linuxdeployqt

环境准备

下载linuxdeployqt

编译安装

复制快捷方式

配置环境变量

使生效

查看版本

安装unixODBC库

解压

配置

编译安装

重启系统

打包

原因

解决方法

打成deb包

打deb包目录构建

拷贝依赖

桌面图标

control文件

postinst文件

postrm文件

构建deb包

deb包安装

卸载应用

获取Release模式下的可执行文件

勾选Qt的Shadow build设置。

 选择Release运行模式,运行。

 会产生一个build-xxx-Release的目录。

 在这个build-xxx-Release的目录下,有一个可执行文件。

打包的目录结构搭建

随便一个地方建一个目录,我的目录名是temp。

       在temp目录下再建一个目录,这个目录的名字要跟可执行文件的名字一致,我的可执行文件名是JiaShiJianCe,将build-xxx-Release目录下的可执行文件拷贝到JiaShiJianCe目录下。

 

 到这里,打包的目录结构就好了。

安装linuxdeployqt

linuxdeployqt用于拷贝可执行文件的依赖。

环境准备

安装git、g++、libgl1-mesa-dev。

sudo apt-get -y install git g++ libgl1-mesa-dev

下载linuxdeployqt

在下载的过程中,可能会出现连接不上的情况,但是问题不大,多运行几次即可。

git clone https://github.com/probonopd/linuxdeployqt.git

 进入下载好的linuxdeployqt目录。

编译安装

qmake
make
sudo make install

复制快捷方式

让linuxdeployqt命令生效。

sudo mv bin/linuxdeployqt /usr/local/bin/

配置环境变量

vim .bashrc

 在最后添加下面内容,Qt库的路径和unixODBC库的路径。

#add qt env
export PATH=/opt/Qt5.12.9/5.12.9/gcc_64/bin:$PATH
export LIB_PATH=/opt/Qt5.12.9/5.12.9/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH=/opt/Qt5.12.9/5.12.9/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH=/opt/Qt5.12.9/5.12.9/gcc_64/qml:$QML2_PATH

export PATH=/usr/local/unixODBC/lib:$PATH

export LD_LIBRARY_PATH=/usr/local/unixODBC/lib/:$LD_LIBRARY_PATH
export LIB_PATH=/usr/local/unixODBC/lib:$LIB_PATH

使生效

source ~/.bashrc

查看版本

linuxdeployqt --version

 说明安装成功。

安装unixODBC库

不安装的话,在拷贝依赖库进行打包时,会出现下面问题,正是缺少unixODBC库导致。

 unixODBC库下载网址:

unixODBCMain pagehttp://www.unixodbc.org/

解压

tar -zxvf unixODBC-2.3.11.tar.gz 

 

配置

cd unixODBC-2.3.11/

./configure --enable-gui=no --prefix=/usr/local/unixODBC

编译安装

make
sudo make install

重启系统

一定一定一定要重启系统,不然缺少unixODBC库问题依然是没有解决。

打包

linuxdeployqt JiaShiJianCe -verbose2

       到这里,打包就完成了,整一个JiaShiJianCe目录拷贝到另一个Linux系统上,正常情况都是可以运行起来,特殊情况另行解决。

       特殊情况例如:

         因为我的工程使用了MySQL,在开发的系统上是存在MySQL驱动的,而另一个干净的Linux系统下,是没有MySQL驱动的,所以程序运行起来是存在问题的。

原因

缺库。

解决方法

libmysqlclient.so.20文件拷贝到/usr/lib/x86_64-linux-gnu/下。

sudo cp libmysqlclient.so.20 /usr/lib/x86_64-linux-gnu/

 

打成deb包

打deb包目录构建

       最终目录结构如下,按照下面目录结构,最终应用安装的位置就在/opt/下。我的可执行文件名是JiaShiJianCe,所以那个目录名也是JiaShiJianCe。

目录作用
output存放生成的deb包
source存放打包文件
DEBIAN存放deb包控制文件
opt存放应用目录
JiaShiJianCe存放可执行文件、依赖库、桌面快捷方式、图标等

拷贝依赖

      将build-xxx-Release目录下的可执行文件拷贝到JiaShiJianCe目录下,利用linuxdeployqt进行拷贝依赖。  

linuxdeployqt JiaShiJianCe -appimage

 出现的错误不用管,是桌面文件的问题。到这里,依赖就全部拷贝完成。

桌面图标

修改default.desktop文件。

修改文件名,改为自己的应用名

mv default.desktop JiaShiJianCe.desktop

 修改JiaShiJianCe.desktop文件内容。

vim JiaShiJianCe.desktop

 修改为下面内容。

  [Desktop Entry]
  Type=Application
  Name=驾驶检测
  Exec=/opt/JiaShiJianCe/JiaShiJianCe
  Icon=/opt/JiaShiJianCe/TuBiao.png
  Comment=This is my test         #说明信息
  Terminal=false                   #是否允许在终端启动

关键字参数
Name快捷方式显示的文字
Exec安装好应用后,可执行文件(包含绝对路径)
Icon安装好应用后,应用的图标(包含绝对路径)

 给快捷方式文件添加可执行文件。

chmod 777 JiaShiJianCe.desktop

 TuBiao.png随便上网找,说明.txt自己写的说明文档,最终的JiaShiJianCe目录如下。

control文件

       control文件主要描述软件包的名称(Package),版本(Version),Installed-Size(大小),Maintainer(打包人和联系方式)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。

       创建control文件

vim control

 添加下面内容,根据自身情况填写。

Package: JiaShiJianCe
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Installed-Size: 40960000
Maintainer: 123@163.com
Description: xxx
关键字含义
Package包名,卸载需要
Version应用版本
Architecture架构
Maintainer维护人员联系方式,看着写
Description软件包描述

postinst文件

       负责安装完成时的配置工作,软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行。

       创建postinst文件。

vim postinst

 添加下面内容,路径根据自己的情况修改,根据自己的情况再额外添加其他指令。

#!/bin/sh
chmod 777 /opt/JiaShiJianCe/JiaShiJianCe.desktop

postrm文件

       软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行。

      创建postrm文件

vim postrm

 

 添加下面内容,根据自己的情况再额外添加其他指令。

#!/bin/sh

 给control、postinst、postrm给予可执行权限。

chmod 775 control postinst postrm

 注意:一定不能给777的权限,否则在构建deb包时会报错。

构建deb包

dpkg -b . /home/cet/Qt/XiangMu/1/temp1/output/JiaShiJianCe_amd64_1.0.0.deb

 最终的目录结构如下,到这里,deb包就构建完成。

deb包安装

sudo dpkg -i JiaShiJianCe_amd64_1.0.0.deb

 在/opt/下就能看到安装的应用了。

 创建桌面快捷方式,.desktop拷贝到桌面即可,在桌面双击图标便可运行程序。

cp JiaShiJianCe.desktop ~/桌面/

 

卸载应用

这个时候就需要包名了。

sudo apt-get remove JiaShiJianCe

 貌似这个指令不太行,直接在/opt/下删除也行。

sudo rm -rf JiaShiJianCe

 

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
Linux系统下,有两种常用的方法可以打包QT程序。 第一种方法是通过脚本进行打包。这种方法简单方便,但是打包程序不能在其他干净的Linux系统中运行。你可以参考中提到的方法,编写一个脚本文件来进行打包。具体步骤如下: 1. 首先,确保你已经安装了所需的依赖库。你可以使用ldd命令来查找程序所需的共享库。 2. 创建一个脚本文件,可以使用任何你熟悉的文本编辑器。在脚本文件中,你需要指定程序的入口点以及程序所需的共享库路径。 3. 接下来,使用chmod命令给脚本文件添加可执行权限。 4. 最后,运行脚本文件来进行打包打包完成后,你会得到一个包含可执行文件和所需共享库的目录。 但需要注意的是,通过这种方式打包QT程序不能在其他干净的Linux系统中运行,所以不太推荐使用。 第二种方法是使用linuxdeployqt工具进行打包。这个工具可以方便地将QT程序打包成一个独立的可执行文件,可以在任何Linux环境中直接运行。你可以从中提供的链接下载linuxdeployqt。 使用linuxdeployqt进行打包的步骤如下: 1. 首先,下载并解压linuxdeployqt工具。 2. 将你的QT程序复制到linuxdeployqt的目录中。 3. 打开终端,并切换到linuxdeployqt的目录。 4. 运行以下命令来打包程序: ``` ./linuxdeployqt <path_to_your_qt_program> -appimage ``` 其中,`<path_to_your_qt_program>`是你的QT程序的路径。 5. 打包完成后,你将得到一个AppImage文件,这个文件就是你的打包好的程序。 通过使用linuxdeployqt工具进行打包,你可以得到一个可以在任何Linux环境中直接运行的QT程序。这种方法更加方便和可靠,推荐使用。 参考文献: 目前我接触到的Linux下的QT程序打包方法主要有两种:第一种:通过脚本进行打包,这种方法简单方便,但是通过这种方式打包QT程序,并不能放到另一台干净的Linux系统下运行,所以不太推荐;第二种:通过Linuxdeployqt进行打包,通过这种方法打包QT程序也很方便,而且打包程序可以放到任何Linux环境下直接运行。下面我将详细介绍以下两种打包方式,大家可以根据自己的实际使用情况任意选择打包方式。 1.下载linuxdeployqt:https://github.com/probonopd/linuxdeployqt/releases

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值