Ubuntu下QT程序发布

Ubuntu下QT程序打包与安装包制作

1、打包依赖库

        新建目录bin,并将生成的release文件拷贝到该目录

        运行命令拷贝相关库到程序目录,类似windows下windeployqt。

linuxdeployqt App -qmldir=/home/lxm/App

如果运行找不到自己编译的库,可以执行如下命令设置临时环境变量

export LD_LIBRARY_PATH=/home/lxm/Loong3/libs/assimp/ubuntu/lib/:/home/lxm/Loong3/libs/ffmpeg4.2.9/ubuntu/lib/:/home/lxm/Loong3/libs/libssh2/ubuntu/lib:$LD_LIBRARY_PATH

新建脚本copylib.sh并使用sh copylib.sh执行,内容如下,它的作用是把ldd命令中所有依赖的库文件拷贝到本地。

#!/bin/sh
exe="App" #你需要发布的程序名称
des="./" #创建文件夹的位置
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des

新建脚本App.sh用于启动程序,名称要与exe保持一致,如果无法做到一致,也可以在脚本中修改basename,如果直接使用./App运行,在没有开发环境的电脑上会由于找不到依赖库程序无法启动,这个脚本主要是为了设置临时环境变量将依赖库目录指向应用程序所在文件夹。

#!/bin/sh

# 开启调试模式(输出执行过程)
#set -x

# 获取应用名称(去掉.sh后缀)
appname=$(basename "$0" | sed 's/\.sh$//')
echo "应用名称: $appname"

# 获取脚本所在目录的绝对路径(优化版:处理符号链接和相对路径)
dirname=$(cd "$(dirname "$0")" || exit; pwd)
echo "脚本所在目录: $dirname"

# 强制覆盖环境变量,只使用本地目录(不拼接系统路径,避免冲突)
export LD_LIBRARY_PATH="$dirname"
export QT_PLUGIN_PATH="$dirname/plugins"
export QML2_IMPORT_PATH="$dirname/qml"
export QT_QPA_PLATFORM_PLUGIN_PATH="$dirname/platforms"
export QT_DISABLE_PLATFORM_PLUGIN_PATH=1

# 输出环境变量,验证是否正确设置
echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
echo "QML2_IMPORT_PATH: $QML2_IMPORT_PATH"
echo "QT_PLUGIN_PATH: $QT_PLUGIN_PATH"

# 启动应用程序
"$dirname/$appname" "$@"

完成以上步骤后,执行sh App.sh,尝试程序是否能够运行,并且把文件夹拷贝到其它没有开发环境的电脑上尝试是否能够执行(此处我打包是在ubuntu22.0.4,测试拷贝到其它版本为22.0.4的虚拟机能够运行,而拷贝到版本为20.0.4时,程序启动异常,没有继续查看原因)。

如果无法启动,可以使用ldd查看是否缺少依赖库。

2、安装包制作

完成第一步后,我们的bin目录已经包含了可以正常执行的应用程序。这一步进行安装包制作。

新建目录package

1.DEBIAN中新建control,写入以下内容

package:App3.0
version:3.0.134
architecture:amd64
maintainer:YS
description:App3.0安装包

2.opt下放入程序目录,安装时此目录会拷贝到/opt/下

3.icons中放入程序图标App.png

4.applications中放入程序快捷方式:新建App.desktop,内容如下

[Desktop Entry]
Encoding=UTF-8
Name=App
Comment=控制软件
Exec=/opt/App3.0/App.sh
Icon=App.png
Terminal=false
StartupNotify=false
Type=Application
Categories=Application;Development;

程序安装时将会把程序拷贝到对应的目录下。可以先手动拷贝一下,尝试开始菜单中是否能出现图标,并能打开程序。如果没图标,可以查看icon、applications中的文件放置是否正确和.desktop文件内容是否正确。

以上步骤都正常后,执行命令生成安装包

sudo dpkg -b package App_3.0.7_amd64.deb

把安装包拷贝到其他电脑上,可以执行命令进行安装

sudo dpkg -i App1.0.7_amd64.deb 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值