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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

获取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版本VersionInstalled-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

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux