在麒麟操作系统上设置QT程序开机自启动的两种简单有效的方法。支持请点赞!
一、QT程序打包
1.设置环境变量
设置QT和linuxdeployqt的环境变量,已设置可忽略该步骤。
在/etc/profile文件末尾添加一下内容:
export PATH=/usr/local/Qt-5.15.2/bin:/home/MyWork/build-linuxdeployqt-unknown-Release/bin:/usr/local/Qt-5.15.2/lib:/usr/local/Qt-5.15.2/plugins:/usr/local/Qt-5.15.2/plugins/platforms/:$PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Qt-5.15.2/libexport PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins:$PLUGIN_PATHexport QML2_PATH=/usr/local/Qt-5.15.2/qml:$QML2_PATHexport QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins/platforms/export QT_DEBUG_PLUGINS=1
2.程序打包
使用linuxdeployqt工具进行打包。
自行下载linuxdeployqt-master编译安装或下载已编译好的执行体。
linuxdeployqt App.exe -appimage
二、创建程序启动脚本
1.在程序执行文件目录下创建startup.sh文件
2.编辑startup.sh文件
输入以下内容(“//”后为本文添加的注释说明,后同):
#!/bin/bash#export QT_QPA_PLATFORM=’offscreen’ //当为无界面程序时须将注释放开source /etc/profile //使环境变量生效cd /*/* //设置为AppRun所在目录路径./AppRun //该文件为linuxdeployqt工具生成文件
三、开机自启动设置
开机自启动针对有无图形界面程序将采用不同的设置方式。
1.针对有图形界面程序
(1).进入系统目录
cd /etc/xdg/autostart/
(2).在/etc/xdg/autostart/目录下新建AppRun.desktop文件(文件名可自定义)
sudo touch AppRun.desktop
(3).赋予AppRun.desktop权限
sudo chmod 777 AppRun.desktop
(4).编辑AppRun.desktop文件内容
输入以下内容:
[Desktop Entry]Type=ApplicationName=AppRun //名称可自定义Exec=/*/startup.sh //设置为startup.sh所在目录路径
(5).reboot重启测试。
2.针对无图像界面程序
重点注意:设置无图形界面程序服务时需将脚本中的export QT_QPA_PLATFORM=’offscreen’放开,否则会报引用QT库错误,暂时找不到解决方案。
(1).进入系统目录
cd /etc/systemd/system
(2).在/etc/systemd/system/目录下新建AppRun.service文件(文件名可自定义)
sudo touch AppRun.servicesudo chmod 777 AppRun.service
(3).编辑AppRun.service文件内容,执行脚本路径根据实际情况修改。
[Unit]Description=AppRunAfter=AppRun.service[Service]User=rootGroup=rootWorkingDirectory=/home//MyWork/bin/unix/Debug/Type=forkingExecStart=/home/MyWork/bin/unix/Debug/startup.shExecReload=/home/MyWork/bin/unix/Debug/startup.sh -s reloadExecStop=/home/MyWork/bin/unix/Debug/startup.sh -s stopExecenable=/home/MyWork/bin/unix/Debug/startup.shRestart=on-abnormal[Install]WantedBy=multi-user.target
(4).依次执行以下命令设置服务属性。
systemctl enable AppRun.service //设置AppRun.service 为服务启动项systemctl start AppRun.service //启动服务systemctl status AppRun.service //查看服务状态
(5).reboot重启测试。
四、使用命令查看进程状态。
ps -ef|grep AppRun