若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127484901
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
上一篇:《麒麟系统开发笔记(七):在线安装软件后,提取其安装包,部署目标机使用离线软件包方式安装软件》
下一篇:《麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo》
在ubuntu上发布qt程序相对还好,使用脚本,但是在麒麟上发布的时候,因为银河麒麟等不同版本,使用脚本就不太兼容,同时为了实现直接点击应用可以启动应用的效果,使用linuxdeployqt发布qt程序。
在ubuntu上发布程序遇到xcb问题,当我们将其部署到另外同样环境但是未装qt的环境下,运行起来一部分是xcb文件,有一部分解决后可以正常运行启用,另一部分直接段错误,程序宕掉(提示,段核心错误,已转存什么的),使用linuxdeployqt能解决此问题,也就是使用脚本打包的升级版本。
《Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败) 》:在ubuntu上发布程序遇到xcb问题,当我们将其部署到另外同样环境但是未装qt的环境下,运行起来一部分是xcb文件,有一部分解决后可以正常运行启用,另一部分直接段错误,程序宕掉(提示,段核心错误,已转存什么的),使用linuxdeployqt能解决此问题,也就是使用脚本打包的升级版本。
《麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序》:这是在麒麟上使用linuxdeployqt打包的全流程。
《Qt实用技巧:在CentOS上使用linuxdeployqt打包发布qt程序》:这是在CentOS界面服务器上linuxdeployq打包的流程。
Linux部署工具linuxdeployqt将应用程序作为输入,并通过将应用程序使用的资源(如库、图形和插件)复制到一个包中使其自包含。结果包可以作为AppDir或AppImage分发给用户,也可以放入交叉分发包中。它可以作为构建过程的一部分,在CMake、qmake和make等系统中部署用C、C++和其他编译语言编写的应用程序。当用于基于Qt的应用程序时,它可以绑定运行应用程序所需的Qt的特定最小子集。
csdn粉丝0积分下载地址:https://download.csdn.net/download/qq21497936/86803960
gitcode地址:https://gitcode.net/mirrors/probonopd/linuxdeployqt
找到main.cpp源码,将这一段(在192行左右)注释掉:
gedit tools/linuxdeployqt/main.cpp
(注意:这一步不做会导致打包输出错误信息,具体看“入坑一”)
sudo apt-get install cmake
sudo apt-get install patchelf
cmake CMakeList.txt
因为安装了git与这个工程可能不对,我们直接使用源码修改大法,直接定位到代码给删掉:
直接删掉目录下的缓存文件:CMakeCache.txt,然后继续:
麒麟系统本身自带了qt5,而我们使用了另外安装的qt5,所以依赖需要引入我们自己安装的qt5上。
为了方便配置,也不影响系统我们装上cmake的gui版本:
sudo apt-get install cmake-gui
cmake-gui
选择对应的路径,然后使用默认unix makefile方式配置:
错误如下:
添加环境变量路径:
继续配置成功:
切入build目录,并且使用make命令即可:
make
没有make install这个,手动移动到/usr/local/bin
sudo mv linuxdeployqt /usr/local/bin/
新建一个工程
然后找个空目录:
开始打包:
错误“QDir::exists: Empty or null file name”,需要调整打包命令:
错误“qmake not fount on the
P
A
T
H
”,
q
m
a
k
e
要引入
PATH”,qmake要引入
PATH”,qmake要引入PATH中:
export PATH=$PATH:/home/hdgx/Qt5.12.1/5.12.1/gcc_64/bin
这里要将Qt引入环境,为了不影响系统,使用脚本引入,每次使用之前使用source env.sh引入即可。
#!/bin/sh
QT_DIR=/home/hdgx/Qt5.12.1/5.12.1/gcc_64
export PATH=${QT_DIR}/bin:$PATH
export LIB_PATH=${QT_DIR}/lib:$LIB_PATH
export PLUGIN_PATH=${QT_DIR}/plugins:$PLUGIN_PATH
export QML2_PATH=${QT_DIR}/qml:$QML2_PATH
export LD_LIBRARY_PATH=${QT_DIR}/lib:$LD_LIBRARY_PATH
echo $PATH
echo $LIB_PATH
echo $PLUGIN_PATH
echo $QML2_PATH
echo $LD_LIBRARY_PATH
下次打包遵循此流程即可,继续打包:
linuxdeployqt 打包的文件名称 -verbose2
// 完整打包命令
linuxdeployqt 可执行程序 -appimage
发现已经打包成功(ERROR:Could not parse verbose level忽略):
源码中做了判断,不是源码编译问题,所以要修改源码。
找到main.cpp源码,将这一段(在第190行左右)注释掉:
gedit tools/linuxdeployqt/main.cpp
然后重新make:
上一篇:《麒麟系统开发笔记(七):在线安装软件后,提取其安装包,部署目标机使用离线软件包方式安装软件》
下一篇:《麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo》
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127484901