场景:
在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程序自启动
浙公网安备 33010602011771号