UOS统信桌面系统x86_64架构下打包qt应用程序


前言

简单记录一下

一、准备环境

1.1 编译安装 依赖库工具 linuxdeployqt

git clone https://github.com/probonopd/linuxdeployqt.git //1.克隆生成依赖库工具
cd linuxdeployqt //2.进入工具目录下
qmake //3.使用qmake编译pro
make //4.编译
sudo make install //安装
sudo mv bin/linuxdeployqt /usr/local/bin/ //移动到系统路径下
linuxdeployqt --version //验证一波
在这里插入图片描述

1.2 patchelf

sudo apt-get install patchelf //安装
patchelf --version //验证
在这里插入图片描述

1.3 安装打包工具 appimagetool

sudo wget -c “https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage” -O /usr/local/bin/appimagetool //下载并安装到指定路径
sudo chmod a+x /usr/local/bin/appimagetool //赋值权限
appimagetool --version //验证
在这里插入图片描述

1.4 配置系统环境

vi ~/.bashrc //打开系统环境配置文件, 按i进入编辑模式, 转到最后,加入以下配置

#配置Qt环境变量 /opt/Qt5.9.0/5.9/gcc_64/bin 换成自己的QT安装路径
export PATH= P A T H : / o p t / Q t 5.9.0 / 5.9 / g c c 6 4 / b i n e x p o r t L D L I B R A R Y P A T H = PATH:/opt/Qt5.9.0/5.9/gcc_64/bin export LD_LIBRARY_PATH= PATH:/opt/Qt5.9.0/5.9/gcc64/binexportLDLIBRARYPATH=LD_LIBRARY_PATH:/opt/Qt5.9.0/5.9/gcc_64/lib
export QT_PLUGIN_PATH= Q T P L U G I N P A T H : / o p t / Q t 5.9.0 / 5.9 / g c c 6 4 / p l u g i n s e x p o r t Q M L 2 I M P O R T P A T H = QT_PLUGIN_PATH:/opt/Qt5.9.0/5.9/gcc_64/plugins export QML2_IMPORT_PATH= QTPLUGINPATH:/opt/Qt5.9.0/5.9/gcc64/pluginsexportQML2IMPORTPATH=QML2_IMPORT_PATH:/opt/Qt5.9.0/5.9/gcc_64/qml

source ~/.bashrc //应用配置

1.5 配置Qt 的 default.conf(/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf)改变qt库搜索顺序(不改的话,系统又自带qt就会优先拿系统的),直接替换掉原来的

/opt/Qt5.9.0/5.9/gcc_64/bin
/opt/Qt5.9.0/5.9/gcc_64/lib

到此基本准备完成

二、打包

2.1 编译出release并单独到一个文件夹中,并用ldd testApi 查看相关的依赖库

ldd testApi在这里插入图片描述
libxx.so => not found 找不到的都需要通过patchelf设置一下依赖库路径或(系统的安装一下),不设置好后面添加依赖库时就会一直没反应

patchelf --set-rpath ‘/home/xxx/Desktop/VMC/third_party/uac/libs/release’ testApi
patchelf 设置路径 ‘自己的路径’ 程序名
设置完后,ldd查看一下,这时就会发现已经有了,但是要注意,要些依赖库中还依赖了其他的库, ldd时看不出来的,一定要将其找出来,并加到patchelf设置的路径下,不然也会一直卡在 linuxdeployqt testApi -appimage
在这里插入图片描述

2.2 打包生成依赖库

linuxdeployqt testApi -appimage
在这里插入图片描述
ls 查看一下,有了相关依赖库说明生成成功,./testApi运行一下,能跑起来就完成了

2.3 制作启动脚本与开始菜单的快捷方式

2.3.1 制作启动脚本

gedit test.sh // 创建test.sh脚本并编辑,加入以下

#!/bin/sh
export QT_PLUGIN_PATH=“:/usr/test/plugins”
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/test/lib #设置一下依赖库的路径,确保程序找的是我们生成的依赖库
appname=basename $0 | sed s,\.sh$,,
dirname=dirname $0
tmp="KaTeX parse error: Expected '}', got '#' at position 9: {dirname#̲?}" if [ "{dirname%KaTeX parse error: Expected 'EOF', got '}' at position 4: tmp}̲" != "/" ]; the…PWD/$dirname
fi
d i r n a m e / dirname/ dirname/appname “$@”

chmod 777 test.sh //退出保存后,给一下执行权限

2.3.2 制作开始菜单的快捷方式

mv default.desktop test.desktop //先将default.desktop名字改改为应用名称test.desktop
gedit test.desktop //打开并编辑里面内容

[Desktop Entry]
Type=Application //类型
Name=testApi //名称
Exec=/usr/test/test.sh //运行的程序和安装后路径,这里是直接运行的脚本,
Icon=/usr/test/logo.png //图标,给安装后的路径
Comment=Edit this default file
Terminal=false //是否通过终端启动

退出保存,后续在将其拷贝到/usr/share/applications路径下

2.4 打包成deb包

大致步骤:直接在桌面创建一个空的depTest文件夹》进入depTest该文件夹创建DEBIAN文件夹以及usr文件夹》先进入DEBIAN文件夹中创建control版本控制信息文件》编辑control,保存退出》退到test目录在进入usr目录》在usr目录中创建share并进入share 》在share目录下创建applications进入到applications》在applications目录中将上一步制作好的test.desktop拷贝过来》在回到usr目录下将生成好的依赖库的应用目录考过来》回到depTest目录中就可以进行打包了

cd ~/Desktop/ //进入桌面
mkdir depTest //桌面创建一个depTest文件夹
cd depTest //进入depTest
mkdir DEBIAN //创建DEBIAN
mkdir usr //创建usr
cd DEBIAN /进入DEBIAN
gedit control //创建版本信息问题并进行编辑,加入以下内容(根据自身应用信息填写)

Package: test
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Installed-Size: 1
Maintainer: test
Description: The
在这里插入图片描述

编辑完control,就退出保存
cd …/usr //进入usr文件夹
mkdir share //创建share文件夹
cd share //进入share文件夹
mkdir applications文件夹
cd applications //进入applications文件夹
cp ~/Desktop/VMC/testApi_build/pack/test.desktop ./ //拷贝之前指定好的菜单快捷到当前目录
cd …/…/ //回到usr目录下
cp -r ~/Desktop/VMC/testApi_build/pack ./ //拷贝打包的目录过来当前目录
mv pack test //将pack目录改名为test目录名
cd …/ //回到depTest目录进行打包

sudo dpkg -b . /opt/test.dep //最执行dpkg即可进行打包
在这里插入图片描述

到此就基本打包完成,双击就可以安装了

三、问题

3.1 一直卡在 linuxdeployqt testApi -appimage 运行后啥提示都没有,也没生成相关依赖库

在这里插入图片描述
遇到这种问题一般是找不到相关的依赖库,根据2.1中的步骤找到相关的依赖库

3.2 报一下错误

linuxdeployqt: relocation error: linuxdeployqt: symbol _ZdlPvm version Qt_5 not defined in file libQt5Core.so.5 with link time reference

这个问题环境中存在多个qt环境,尤其是有系统自带的,就需要通过1.5中的步骤进行配置Qt 的 default.conf 或者通过patchelf 指定一下加载路径也是可以的

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值