[教程][Ubuntu][Qt]将Qt程序打包成deb文件,发布、安装及使用

4 篇文章 0 订阅
2 篇文章 0 订阅

在Ubuntu上用qt软件编写的程序完成后,如果需要在另一台纯净的Linux系统上运行,则可以通过打包成deb文件的形式进行移植,经测试可用。

0 准备前说明

修改程序.pro文件,将程序运行时要加载的数据文件放置在运行文件目录下。(例如要加载人脸检测的文件)

QMAKE_POST_LINK += "cp -u $${_PRO_FILE_PWD_}/facefile/shape_predictor_68_face_landmarks.dat $${OUT_PWD};" \

这样在Release编译时,会将该文件自动复制到Release目录下,为后面的打包步骤省了很多麻烦。

1 环境

系统环境:Ubuntu16.04
Qt版本:5.9

2 步骤

2.1 Qt下Release模式编译工程文件(文件名为Test)

2.2 整理文件

2.2.1 创建如下基本目录结构

demo
    project
        DEBIAN    // 存放control文件,用于记录安装包相关信息的配置文件  
        usr
            local
                lib                    //存放程序所需的链接库
                Test        // 存放程序文件(建议与程序同名)
            share
                applications    // 存放 *.desktop 文件
                icons            // 存放软件的图标 *.png

2.2.2 将编译好的Test文件及需要加载的数据文件放在Test目录下

2.2.3 定位到Test目录下,并创建脚本文件Test.sh

cd ~/demo/project/usr/local/Test    //具体目录改成自己创建的目录
touch Test.sh                      //建议不使用sudo命令

双击Test.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 +x Test.sh
sudo ./Test.sh

则会弹出自己程序的界面;

2.3 提取并整理依赖库(建议在非中文路径下)

2.3.1 定位到Test目录下,并创建脚本文件copylib.sh文件

touch copylib.sh

双击Test.sh文件,写入如下内容:

#!/bin/sh

if [ ! -d "./dep" ]; then
  mkdir ./dep
else : then
  rm -rf ./dep
  mkdir ./dep
fi

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

保存后并输入如下命令:

sudo chmod +x copyllib.sh
./copylib.sh Test

该目录下会得到一个deb文件夹

2.3.2 整理依赖库

1、将deb文件夹的子文件夹里的依赖库文件复制粘贴到demo/project/usr/local/lib目录下;
2、根据自己程序需要(一般程序均会用到),在Test目录下创建platforms文件夹,并将Qt5.9.4/5.9.4/gcc_64/plugins/platforms/libqxcb.so(按照自己安装的Qt安装目录及版本寻找)复制到该文件夹下;
3、根据自己程序情况,将其他所用到的依赖库添加到具体目录下;

2.4 编写配置文件

2.4.1 在DEBIAN路径下创建control文件

cd ~/demo/project/DEBIAN
touch control

双击control文件,添加如下内容

package: Test                                     
version: 1.0.0                                   
architecture: amd64                            
maintainer: Test                              
description: Test Project     
 
------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
package 表示安装包的名字 
version 表示次安装包的版本
architecture 当前系统的架构的信息
maintainer 此安装包的维护者
description 此安装包的描述

2.4.2 在applications目录下创建Test.desktop文件

cd ~/demo/project/usr/share/applications
touch Test.desktop

双击该文件并添加内容

[Desktop Entry]
Encoding=UTF-8
Name=Test   
Exec=/usr/local/Test/Test.sh
Icon=/usr/share/icons/Test.png
Comment="released_on_2020_08_05"
Terminal=false
Type=Application
Categories=Development
 
------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
Exec 目标文件(完整路径)
Icon 图标文件(完整路径)末尾不能有空格,否则将会导致无法加载图标
Categories可以取以下值,表示程序的启动快捷方式放在哪个菜单下:
			应用菜单Application;
			Network放在互联网(Internet);
			办公 Office;
			图形 Graphics;
			声音和视频 AudioVideo;
			系统工具 System;
			编程 Development;
			附件 Utility;
			影音 AudioVideo;
			游戏 Game;
			首选项 Settings(GNOME;GTK;Settings;HardwareSettings;);
			系统管理 System;Settings;
sudo chmod +x Test.desktop

2.4.3 将一张.png图片重命名为Test.png并复制到icons目录下

2.5 本文最终目录如下

demo
    project
        DEBIAN
            control  
        usr
            local
                lib
                    libs.......
                SeerTools
                    platforms
                        libqxcb.so
            share
                applications    
                    SeerTools.desktop
                icons            
                    SeerTools.png

2.6 打包制作安装包

在demo文件夹下输入如下指令
deb包正确的命名规则program-name_version_architeture.deb。所有的值必须与它们在control文件里对应的语句相同

dpkg -b project/ Test_1.0.0_amd64.deb

一段时间便可得到deb文件

2.7 安装测试

在另一台linux系统下,将deb文件拷贝到某目录下,命令定位到该目录下,并输入命令进行安装

sudo dpkg -i Test_1.0.0_amd64.deb

(或者直接双击该文件进行安装(未验证))

2.8 运行测试

找到Test.desktop文件,路径在/usr/share/applications/Test.desktop
或者在桌面左上角点击图标,在应用里找到运行文件

2.9 卸载测试(未验证)

sudo dpkg -r Test

3 参考

在Ubuntu上打包Qt工程,并实现其安装和使用。
https://blog.csdn.net/qq_26971331/article/details/87939098
ubuntu下打包制作deb安装包
https://blog.csdn.net/yangbingzhou/article/details/33318625



写于关雎


在这里插入图片描述


新浪微博:https://weibo.com/tianzhejia
CSDN博客:https://blog.csdn.net/qq_35605018
博客网站:http://www.zhijiadeboke.xyz
GitHub:https://github.com/ZhijiaTian
QQ邮箱:2461824656@qq.com
126邮箱:tianzhejia@126.com
Outlook邮箱:tianzhejia@outlook.com

以上均可与本人取得联系,欢迎探讨。^ v ^

  • 4
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 安装Qt 首先需要安装Qt,可以通过以下命令进行安装: ``` sudo apt-get install qt5-default ``` 2. 编写Qt程序 编写Qt程序并进行编译,生可执行文件。 3. 创建Debian目录结构 在程序的根目录下创建一个名为`debian`的目录,该目录中需要包含以下文件: - control:描述软件包的元数据,包括软件包名称、版本、依赖关系等信息。 - changelog:软件包的更改日志。 - rules:打包软件包的规则。 - compat:指定打包软件包所使用debhelper版本。 可以通过以下命令创建Debian目录结构: ``` dh_make --createorig ``` 4. 编辑control文件 编辑`debian/control`文件,需要包含以下内容: ``` Source: package-name Section: devel Priority: optional Maintainer: Your Name <youremail@domain.com> Build-Depends: debhelper (>= 9), qt5-default Standards-Version: 3.9.3 Package: package-name Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Description of package-name ``` 其中,`package-name`需要替换为软件包的名称,`Maintainer`需要替换为你的名字和邮箱地址,`Description`需要替换为软件包的描述。 5. 编辑changelog文件 编辑`debian/changelog`文件,需要包含以下内容: ``` package-name (version) distribution; urgency=low * Initial release. -- Your Name <youremail@domain.com> Wed, 01 Jan 2020 00:00:00 +0800 ``` 其中,`package-name`需要替换为软件包的名称,`version`需要替换为软件包的版本号,`distribution`需要替换为Linux发行版的名称,`Your Name`和`youremail@domain.com`需要替换为你的名字和邮箱地址。 6. 编辑rules文件 编辑`debian/rules`文件,需要包含以下内容: ``` #!/usr/bin/make -f %: dh $@ ``` 7. 编辑compat文件 编辑`debian/compat`文件,需要包含以下内容: ``` 9 ``` 8. 打包程序程序的根目录下运行以下命令进行打包: ``` debuild -us -uc ``` 该命令将在当前目录下生一个`.deb`文件,即为打包好的软件包。 至此,将Qt程序打包deb的步骤就完了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值