一、抓取依赖库,摆脱qt环境

 参考材料:

Linux 环境下 Qt 可执行程序依赖库打包脚本_linux下获取qt程序依赖库_barbyQAQ的博客

(1)在qtcretor中使用release构建

(2)打开构建生成的“build-项目名-mykit-Release”文件夹

在该目录下找到可执行文件(假设为test),创建.sh文件,命名同可执行文件名称一致(即为test.sh)

(3)在.sh文件中写入以下内容:

#!/bin/sh
# 可执行程序名
appname="test" #test更改为自己的程序名称
# 目标文件夹
dst="./library"  #library更改为自己的文件夹名称
# 利用 ldd 提取依赖库的具体路径
liblist=$(ldd $appname | awk '{ if (match($3,"/")){ printf("%s "), $3 } }')
# 目标文件夹的检测
if [ ! -d $dst ];then
        mkdir $dst
fi
# 拷贝库文件和可执行程序到目标文件夹
cp $liblist $dst
cp $appname $dst

(4)在“build-项目名-mykit-Release”目录下打开终端,输入:

chmod +x test.sh #test更改为自己文件的名称

(5)双击执行.sh文件,即可生成依赖库文件夹

二、正式打包

参考材料:

qt程序打包(四)Linux(UOS)系统生成deb包_qt打包deb_bug远离Jemma的博客

uos规定第三方的应用程序装在/opt/apps路径下,我们在打安装包的时候先建立好目录结构,填入相应的内容,就可以打包了。
(1)建立目录结构(具体结构见原文)

注意事项:
1.最外层的文件夹要以“程序名-版本号”或域名倒写的形式,名字必须小写!!
2.icons目录存放的是应用程序的图标,hicolor目录下:png格式按照像素大小分不同文件夹存放,svg格式存放在scalable文件夹下,logo直接存放在icons目录下

(2)修改info内容

{
    "appid": "abc",   #程序标识
    "name": "Abc",               #此处是你像展示出来的程序名
    "version": "1.0.0",
    "arch": ["amd64"],
    "permissions": {
        "autostart": false,
        "notification": false,
        "trayicon": true,
        "clipboard": false,
        "account": false,
        "bluetooth": false,
        "camera": false,
        "audio_record": false,
        "installed_apps": false
    }
}

(3)编写.destop文件

例:

[Desktop Entry]
#Desktop文件类型
Type=Application
#应用的分类
Categories=Application;Development
#应用名
Name=ToMe
Name[zh_CN]=图迷
#可执行程序的名称
Exec=/opt/apps/tome/files/bin/test
#图标
Icon=/opt/apps/tome/entries/icons/hicolor/test.png

(4)在主文件夹下进入终端,输入指令

dh_make --createorig -s -n

生成debian文件夹

(5)进入debian文件夹

打开终端,先删除多余内容:

rm *.ex *.EX
rm -rf *.docs README README.*

按自己的需求修改control文件(无特殊需求可不改)修改rule文件,需修改的内容为:

export DH_VERBOSE = 1  


%:
    dh $@
override_dh_auto_build:

override_dh_shlibdeps:

override_dh_strip:

(6)新建install文件(无后缀),文件内容:

opt/ /    #装在根目录下,结果就是:将之前做好的目录结构放到/opt下了

(7)在主文件夹下,打开终端在命令行输入指令,生成deb包

sudo dpkg-buildpackage -us -uc -b -tc

最后的结果:

程序可以安装,但生成的程序没有在开始菜单出现!不知道算不算成功