当前位置: 首页 > Linux

QtonLinux使用deb包发布

时间:2023-04-06 12:11:30 Linux

使用.deb包在Ubuntu的PPA上发布QtAPP。由机器创建,然后需要将二进制可执行文件打包分发。在Ubuntu系统中,通常使用deb格式的文件来打包二进制安装包。Ubuntu系统提供了个人包档案(PersonalPackageArchives,PPA)在线安装deb的功能。本文介绍在Linux系统中使用Qt编译生成的二进制文件收集*.so库文件的过程,Ubuntu的deb打包过程,完成从Qt编译生成的二进制文件到发布到Ubuntu个人的整个过程软件包文件。1.收集支持库文件使用QtCreator开发的项目工程文件在release或debug模式下生成的二进制文件依赖于QtCreator的环境变量,是Qt运行时库的完整环境变量。当二进制文件离开环境时,会提示加载依赖库失败。Linux系统ldd命令(lddapp)可以显示二进制文件依赖关系。参考文献1提供了自动收集库文件的脚本。重命名为qt-lib-collect.sh,入参1目标文件,入参2库文件存放路径。#!/bin/sh#可执行程序名appname=$1#目标文件夹dst=./$2#使用ldd提取依赖库的具体路径liblist=$(ldd$appname|awk'{if(match($3,"/")){printf("%s"),$3}}')#检测目标文件夹if[!-d$dst];thenmkdir$dstfi#复制库文件和可执行程序到目标文件夹cp$liblist$dstcp$appname$dsteg:./qt-lib-collect.shappout_dir2.使用deb包文档2提供排序方法。使用deb打包,需要创建一个符合deb格式规则的文件夹。deb包包括DEBIAN目录和目标软件安装路径文件夹。例如,创建一个mydebpac文件夹。符合deb格式的最小文件夹结构为:文件夹DEBIAN,规定包含changlogcontrocopyrightpostinstpostrmprerm文件。deb来描述,需要按照deb定义的字段格式填写。文件夹/opt:当用户使用dpkg-i安装deb时,该包的安装文件会被解压到用户的/opt路径下。同样,如果设置为/usr,则会解压到/usr。文件postinst:脚本文件。复制文件目录后执行。因此,preinst在安装前为文件执行脚本。fileprerm:脚本文件。在卸载文件目录之前执行。对应的postrm就是文件卸载后的执行脚本。文件控制:deb文件包描述,其内容包括包名、版本、依赖库、包介绍等,所有脚本文件需要预先赋予执行权限chmod+x....2.1控制文件包:tinySerialVersion:v1.1Section:freePriority:optionalDepends:libssl.0.0.so,libstdc++2.10-glibc2.2Suggests:OpensslArchitecture:amd64Installed-Size:61952Maintainer:carlos.wei.hk@gmail.comProvides:mysoftwareDescription:tinySerialisanopensourceGUIserialportdebugLinux.2.2postinst文件上的软件可以在postinst中写一些处理快捷方式和配置环境变量的操作。#!/bin/shcp/opt/tinyserial/tinyserial.desktop/usr/share/applicationscp/opt/tinyserial/tinyserial/usr/bin作者会做两个过程:将*.desktop文件复制到应用中心,路径/usr/share/applications将二进制可执行文件复制到/usr/bin2.3postrm文件和postinst回滚执行文件。#!/bin/shrm/usr/share/applications/tinyserial.desktoprm/usr/bin/tinyserial2.4生成deb包dpkg-btinyserialtinyserial-v1.1.deb附录一常用deb操作命令2安装deb包:dpkg-imydeb.deb卸载deb包:dpkg-rmysoftware查看deb包是否安装:dpkg-smysoftware查看deb包文件内容:dpkg-cmydeb.deb查看deb包信息当前目录:dpkg--infomydeb.debdpkg-Xmydeb.debmydeb解压deb包中DEBIAN目录下的文件(至少包括控制文件)dpkg-emydeb.debmydeb追赶火车。【Qt依赖库】Qt在Linux环境下的可执行程序依赖库打包脚本。?新月时刻。dpkg制作deb包。?