场景:

在Ubuntu的Desktop版本开发环境下编译,在CentOS的server版本中运行。

 

部署方式1:

使用QT进行对工程进行静态编译。

说明: QT默认使用的是动态编译,即编译后的可执行文件需要链接动态库,但动态库在不同的操作系统版本中有较大出入,因此不建议使用动态编译的版本进行不同操作系统间的移植。

步骤:

1. 下载Qt的源码sources,可通过Qt目录下的MaintainanceTool中的Add comments选项,勾选对应Qt版本的sources来下载,或者直接在镜像网站下载Qt的源码

2. 对Qt源码进行手动静态编译,具体编译方法可以百度搜索“XXX系统下Qt XXX版本静态编译”,例如:linux-ubuntu静态编译Qt-5.14.2成功案例_MoDa_Li的博客-CSDN博客

推荐配置方式:

在源文件目录下新建一个autoConfigure.sh的脚本文件,脚本内容如下,注意内容中引号内的空格:

 

#!/bin/bash


QT_INSTALL_PATH="-prefix /home/hades/Qt/5.15.2/gcc_64_static"
QT_COMPLITER+="-platform linux-g++-64"

CONFIG_PARAM+="-static "
CONFIG_PARAM+="-release "
CONFIG_PARAM+="-recheck-all "
CONFIG_PARAM+="-nomake examples "
CONFIG_PARAM+="-nomake tests "
CONFIG_PARAM+="-xcb "

CONFIG_PARAM+="-opensource "
CONFIG_PARAM+="-confirm-license "

echo "./configure $CONFIG_PARAM $QT_COMPLIER $QT_INSTALL_PATH"
./configure $CONFIG_PARAM $QT_COMPLIER $QT_INSTALL_PATH

 

修改权限

sudo chmod a+x autoConfigure.sh

执行自动配置脚本,注意在执行配置脚本前建议检查是否有config.cache文件,如果有使用rm config.cache命令删除

./autoConfigure.sh

  

注意:在执行配置检查时,可能会报错,原因是缺少QT编译相关的依赖库,解决方法,使用以下命令安装依赖库 

 


sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev

 

3. 完成Qt源码的静态编译并进行安装

4. 使用Qt静态编译获得的qmake对工程进行静态编译生成makefile

 

 

 

qmake XXX.pro

 

5. 再用对makefile进行编译生成可执行文件

make

  

 

 

部署方式2

针对带GNOME桌面版本的Linux,可以尝试用以下方式部署。

本案例以Ubuntu 20.04为例进行部署

 

步骤1:使用linuxdeployqt方法进行打包,参考: QT程序在Linux环境下打包发布方法 - 大王背我来巡山® - 博客园 (cnblogs.com)

在打包后,正常情况下linuxdeployqt工具会生成xxx.desktop文件和AppRun

 

  

注意:此处Exec属性中Exec=AppRun %F不包含AppRun的完整路径,不使用完整路径会造成自启动失败,因此,建议修改该属性,使用AppRun的绝对路径,此处,我将该Qt程序存放在/opt/release下

因此,因该修改为:Exec=/opt/release/AppRun %F 

 

 

 

 

 

步骤2:将xxx.desktop文件拷贝至/etc/xdg/autostart/目录下

步骤3:修改xxx.desktop权限

chmod 755 xxx.desktop

  

步骤4:重启后检验自启动是否成功

 

问题:如果自启动不成功,检查xxx.desktop文件中Exec属性是否包含完整的app路径

 

 

参考  Linux系统下开机自启自己写的Qt程序(亲测可行)_AvelinLiu的博客-CSDN博客_linux qt程序自启动

 

posted on 2021-10-29 01:29  大王背我来巡山®  阅读(642)  评论(0)    收藏  举报