在麒麟操作系统上设置QT程序开机自启动的两种简单有效的方法。支持请点赞!
设置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/:$PATH
-
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Qt-5.15.2/lib
-
- export PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins:$PLUGIN_PATH
-
- export QML2_PATH=/usr/local/Qt-5.15.2/qml:$QML2_PATH
-
- export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins/platforms/
-
- export QT_DEBUG_PLUGINS=1
使用linuxdeployqt工具进行打包。
自行下载linuxdeployqt-master编译安装或下载已编译好的执行体。
linuxdeployqt App.exe -appimage
输入以下内容(“//”后为本文添加的注释说明,后同):
- #!/bin/bash
-
- #export QT_QPA_PLATFORM=’offscreen’ //当为无界面程序时须将注释放开
-
- source /etc/profile //使环境变量生效
-
- cd /*/* //设置为AppRun所在目录路径
-
- ./AppRun //该文件为linuxdeployqt工具生成文件
开机自启动针对有无图形界面程序将采用不同的设置方式。
(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=Application
-
- Name=AppRun //名称可自定义
-
- Exec=/*/startup.sh //设置为startup.sh所在目录路径
(5).reboot重启测试。
重点注意:设置无图形界面程序服务时需将脚本中的export QT_QPA_PLATFORM=’offscreen’放开,否则会报引用QT库错误,暂时找不到解决方案。
(1).进入系统目录
cd /etc/systemd/system
(2).在/etc/systemd/system/目录下新建AppRun.service文件(文件名可自定义)
- sudo touch AppRun.service
-
- sudo chmod 777 AppRun.service
(3).编辑AppRun.service文件内容,执行脚本路径根据实际情况修改。
- [Unit]
-
- Description=AppRun
-
- After=AppRun.service
-
- [Service]
-
- User=root
-
- Group=root
-
- WorkingDirectory=/home//MyWork/bin/unix/Debug/
-
- Type=forking
-
- ExecStart=/home/MyWork/bin/unix/Debug/startup.sh
-
- ExecReload=/home/MyWork/bin/unix/Debug/startup.sh -s reload
-
- ExecStop=/home/MyWork/bin/unix/Debug/startup.sh -s stop
-
- Execenable=/home/MyWork/bin/unix/Debug/startup.sh
-
- Restart=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