一、抓取依赖库,摆脱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
最后的结果:
程序可以安装,但生成的程序没有在开始菜单出现!不知道算不算成功