Ubuntu打包Qt deb程序

编译Qt可执行程序,通过 ldd 获取到该程序的依赖库,下方脚本获取可执行程序并拷贝到指定目录。

#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done

创建打包程序的路径,Ubuntu在打包Qt程序时,需要几个文件夹的路径结构如图:
在这里插入图片描述

  1. control 文件:
package:程序名称
version:版本
architecture:平台 amd64或者其他
maintainer:维护者
description:软件介绍
  1. desktop文件介绍
[Desktop Entry]
Name=安装程序名称
Comment=程序介绍
Exec=程序安装位置 如果是默认/usr/bin下,可以只写程序名称
Icon=图标位置 
Terminal=false
Type=Application
X-Ubuntu-Touch=true
Categories=Development
Name[zh_CN]=desktop
  1. 一个打包的小脚本 pack.sh
#!/bin/sh
name=$1
downLine="_"
version="1.0.0"
platform="amd64"
HZ=".deb"
debname=${name}${downLine}${version}${downLine}${platform}${HZ}
echo ${debname}
rm -f ${debname}
sudo dpkg -b $1 ${debname}

执行 ./pack.sh 打包位置;
注:假设程序名称为APPExec,创建一个APPExec的文件夹,在APPExec文件夹中创建上述的目录结构;之后再APPExec同级路径下打开终端,执行
./pack.sh APPExec 即可生成APPExec.deb安装包。

### 如何在 Ubuntu 上使用 QT 创建 deb 包并打包应用程序 #### 准备工作 为了在 Ubuntu 系统上创建一个可发布的 `.deb` 安装包,需要准备一些必要的文件和工具。这些包括但不限于 `control` 文件、`desktop` 文件以及其他支持文件。 控制文件 (`control`) 是 Debian 软件包的核心配置文件之一,它定义了软件包的基本元数据[^1]。以下是其基本结构: ```plaintext Package: 应用程序名称 Version: 版本号 Architecture: 平台 (如 amd64 或其他架构) Maintainer: 维护者的姓名和邮箱地址 Description: 对该应用的简短描述 ``` 对于桌面环境的应用,还需要提供一个 `.desktop` 文件来注册启动器项[^2]。`.desktop` 文件的内容通常如下所示: ```ini [Desktop Entry] Name=安装程序名称 Comment=程序介绍 Exec=/usr/bin/程序名称 Icon=/path/to/icon Terminal=false Type=Application Categories=Development; Name[zh_CN]=中文显示名 ``` #### 自动化脚本 可以通过编写简单的 Shell 脚本来简化整个打包过程。下面是一个用于生成 `.deb` 的简单脚本示例: ```bash #!/bin/bash name=$1 downLine="_" version="1.0.0" platform="amd64" HZ=".deb" debname="${name}${downLine}${version}${downLine}${platform}${HZ}" echo "${debname}" rm -f "${debname}" sudo dpkg-deb --build "$1" "${debname}" ``` 此脚本接受目标目录作为参数,并按照指定格式构建最终的 `.deb` 文件。 #### 使用 linuxdeployqt 工具 另一种更高效的方法是利用专门设计用来处理 Qt 应用部署问题的工具——`linuxdeployqt`[^3]。这个工具能够自动检测依赖库并将它们嵌入到您的项目中,从而减少手动操作的工作量。 执行命令大致形式为: ```bash linuxdeployqt /path/to/binary -bundle-non-qt-libs ``` 这会将所有必需的非 Qt 动态链接库复制到适当的位置以便于后续打包步骤顺利进行。 #### 构建完整的 DEB 结构 最后一步就是设置好正确的目录层次结构以满足 Debian 标准的要求[^4][^5]。典型的布局可能看起来像这样: ``` . ├── DEBIAN/ │ └── control └── usr/ ├── bin/ │ └── MyApp ├── share/ └── applications/ └── default.desktop ``` 其中每个子目录都对应着特定的功能区域;例如 `/usr/share/applications/default.desktop` 就是用来声明图形界面入口点的地方。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值