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

打包步骤

  • 前言
  • 一、准备环境
    • 1.1 编译安装 依赖库工具 [linuxdeployqt](https://github.com/probonopd/linuxdeployqt)
    • 1.2 patchelf
    • 1.3 安装打包工具 [appimagetool](https://github.com/AppImage/appimagetool)
    • 1.4 配置系统环境
    • 1.5 配置Qt 的 default.conf(/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf)改变qt库搜索顺序(不改的话,系统又自带qt就会优先拿系统的),直接替换掉原来的
  • 二、打包
    • 2.1 编译出release并单独到一个文件夹中,并用ldd testApi 查看相关的依赖库
    • 2.2 打包生成依赖库
    • 2.3 制作启动脚本与开始菜单的快捷方式
    • 2.4 打包成deb包
  • 三、问题
    • 3.1 一直卡在 linuxdeployqt testApi -appimage 运行后啥提示都没有,也没生成相关依赖库
    • 3.2 报一下错误


前言

简单记录一下

一、准备环境

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 testApiUOS统信桌面系统x86_64架构下打包qt应用程序_第1张图片
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
UOS统信桌面系统x86_64架构下打包qt应用程序_第2张图片

2.2 打包生成依赖库

linuxdeployqt testApi -appimage
UOS统信桌面系统x86_64架构下打包qt应用程序_第3张图片
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
UOS统信桌面系统x86_64架构下打包qt应用程序_第4张图片

编辑完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 运行后啥提示都没有,也没生成相关依赖库

UOS统信桌面系统x86_64架构下打包qt应用程序_第5张图片
遇到这种问题一般是找不到相关的依赖库,根据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 指定一下加载路径也是可以的

你可能感兴趣的:(qt,UOS,Linux,linuxdeployqt,跨平台打包)