项目需要,需要将Qt开发的程序部署到UOS系统,最终目标要求在纯净的系统上能够运行,主要记录打包过程中遇到的问题,方便后面再用。
一、安装Qt 5.15.2
使用的Qt版本是Qt5.15.2,此次为在线安装(源码编译后续在记录)为加速安装,采用清华镜像
https://mirrors.tuna.tsinghua.edu.cn/qt/
首先,赋予在线安装器运行权限
sudo 777 chmod qt-xxxxxx.run
./ qt-xxxxxx.run --mirror https://mirrors.tuna.tsinghua.edu.cn/qt/
Qt 5.15.2 存在bug, 部分组件是没有的(官方已经确认),勾选时需要注意。
安装完成后,需要配置环境变量
vim ~/.bashrc(用户环境) 或 sudo vim ./etc/profile(系统环境)
#conf qt env
export PATH=~/Qt/5.15.2.0/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=~/Qt/5.15.2.0/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=~/Qt/5.15.2.0/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=~/Qt/5.15.2.0/gcc_64/qml:$QML2_IMPORT_PATH
source ~/.bashrc 或是重启系统(修改/etc/profile)使配置生效
二、安装 linuxdeplouqt
1. 安装 linuxdeplouqt
打包用的工具是linuxdeplouqt,类似于windows的windeployqt, 网址为
Releases · probonopd/linuxdeployqt · GitHub
尽管github提供预编译包,但是仅支持较旧的版本,因此多数需要自行编译,下载源码后,利用qt 即可进行编译
编译前需要修改部分代码:(图中选中的部分)
构建完成后,即可在bin目录下看到生成的文件,然后赋予运行权限,移动到指定目录即可
chmod 777 linuxdeployqt
sudo mv linuxdeployqt /usr/local/bin
此处可命令行输入 linuxdeployqt进行验证
2.安装依赖
linuxdeployqt 依赖patchelf工作,因此若没有安装,请在线安装或者下载源码编译
还需要下安装 Appimagetool, 下载地址
https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
如果不需要打包成单独的可执行文件,可不安装.
三、打包
把编译生成的程序放到某文件夹下面,执行linuxdeployqt,若正确配置qt环境以及所需的第三方库,程序运行所需的库将会被复制此文件夹下面。修改default.desktop文件,配置快捷方式
利用linuxdeployqt 工具拷贝好应用的依赖文件后,就可以打包deb安装包了
1. deb包安装路径原理简述
打包目录与安装后目录结构对比如下:
source
├── DEBIAN
│ └── control
│ └── postinst
│ └── postrm
├── opt
└── Test
├── Test
└── xxx
照此打包目录生成deb,安装后,其目录如下:
/
├── opt
└── Test
├── Test
└── xxx
规划好安装路径后,依次配置*.desktop桌面快捷方式、control、postinst和postrm,(文件的编写可参考 使用Linux dpkg 打包 - 刘达人186 - 博客园 (cnblogs.com))
然后使用dpkg命令构建deb包
dpkg -b mydeb mydeb.deb #第一个参数为将要打包的目录名,第二个参数为生成包的名称
打包完成即可命令行安装或者双击安装
四、仍待解决的问题
UOS专业版启动菜单有右键“卸载”命令,利用其卸载时会报错,利用dpkg -r 卸载可正常卸载。
目前,看到博客使用upTool进行打包,有待尝试,后续补充。