linux下将Qt程序打包成deb文件,发布、安装及使用,ubuntu和银河麒麟下可用

34 篇文章 2 订阅

本次测试为在ubuntu打包程序为deb文件包,然后再Ubuntu和银河麒麟下安装测试,均可使用

1、Qt下Release模式编译工程文件,文件名为wapp

在这里插入图片描述

2、创建如下基本目录结构

本目录结构在~目录下创建

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

在这里插入图片描述
在这里插入图片描述

3、 将编译好的wapp文件及需要加载的数据文件放在usr/local/wapp目录下

定位到usr/local/wapp目录下,并创建脚本文件wapp.sh

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

添加wapp.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 "$@"

或者

#!/bin/sh 
#pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/local/shixun/wapp
#setstatus -p softmode
/usr/local/wapp/wapp

#pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/local/shixun/wapp这句是用来sudo启动软件的,这里不需要,如果软件启动后没有创建和读写文件的权限可以加入,但是这样会导致银河麒麟下不能使用中文输入,所以屏蔽了,在银河麒麟下不能qt应用不能创建文件和写文件的话,就开启软模式。
保存后并输入如下命令:

sudo chmod +x wapp.sh
sudo ./wapp.sh

如果是ubuntu的则会弹出自己程序的界面,但是因为我这个银河麒麟是在arm64上面跑的,所以无法运行麒麟上的程序,只是用来打包

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

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

touch copylib.sh

修改copylib.sh文件,写入如下内容:

#!/bin/sh

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

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

标粗的地方要修改为自己的
保存后并输入如下命令:

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

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

5、整理依赖库

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

6、编写配置文件

在DEBIAN路径下创建control文件

cd ~/wapp/DEBIAN
touch control

control文件,添加如下内容

package: wapp                                     
version: 1.0.0                                   
architecture: arm64                            
maintainer: wapp                              
description: wapp Project     
 
------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
package 表示安装包的名字 
version 表示次安装包的版本
architecture 当前系统的架构的信息,银河麒麟在arm64的飞腾上跑的,所以这里用的arm64,若是Ubuntu则改为amd64
maintainer 此安装包的维护者
description 此安装包的描述

7、在applications目录下创建wapp.desktop文件

cd ~/wapp/usr/share/applications
touch wapp.desktop

修改该文件并添加内容

[Desktop Entry]
Encoding=UTF-8
Name=wapp
Exec=/usr/local/wapp/wapp.sh
Icon=/usr/share/icons/logo3.ico
Comment="released_on_2022_05_16"
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;

但是发现使用Exec=/usr/local/wapp/wapp.sh时,在飞腾加银河麒麟上的桌面添加不成功这个wapp.desktop,所以这里使用的Exec=/usr/local/wapp/wapp

sudo chmod +x wapp.desktop

8、将.png图片或.ico复制到icons目录下,这个图片就是qt程序的.pro文件中定义的图标

RC_ICONS = logo3.ico

在这里插入图片描述

9、最终目录结构

wapp
        DEBIAN
            control  
        usr
            local
                lib
                    libs.......
                wapp
                    platforms
                        libqxcb.so
            share
                applications    
                    wapp.desktop
                icons            
                    logo3.ico

10、打包制作安装包

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

sudo dpkg -b wapp/ wapp_1.0.0_arm64.deb
或
sudo dpkg -b wapp/ wapp_linux_arm64.deb

dpkg -b wapp/ wapp_linux_arm64.deb这个我测试可以

若为ubuntu下打包,则将改为
sudo dpkg -b wapp/ wapp_linux_amd64.deb

一段时间便可在~目录下得到deb文件

11、安装测试

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

sudo dpkg -i wapp.0.0_arm64.deb

12、运行测试

找到wapp.desktop文件,路径在/usr/share/applications/wapp.desktop
如果桌面没有wapp.desktop,则可将/usr/share/applications/wapp.desktop复制到桌面

13、 卸载测试

sudo dpkg -r wapp

14、附录

由于本项目是在ubuntu交叉编译的银河麒麟上的qt程序,用的aarch64的编译器编译的qt的源码生成的qmake,后来将这个编译好的qt的路径加入到环境变量,发现并没有生效,所以后来采用的是,将编译好的qt源码放到银河麒麟,并设置环境变量,前面文章有介绍,然后在银河麒麟安装好软件后,就可以双击运行了。

运行后发现对于数据库没有写的权限,也就是数据库写不进去,解决:终端输入:

sudo chmod -R 777 数据库文件夹路径
  • 11
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值