1、在桌面文件夹下新建一个desktop文件,以文本编辑器打开
cd 桌面
touch MCUViewer.desktop
注意桌面文件夹在主文件夹下,有的名称为:desktop,我安装的中文版。
填入以下内容:
[Desktop Entry] Name=MyApp Exec=/home/zhangxiaomeng/myprogram/build/MCUViewer # 必须用绝对路径! Icon=/path/to/icon.png # 可选,但建议提供 Terminal=false # 如果需要终端输入密码或命令为true,否则为false Type=Application Path = /home/zhangxiaomeng/myprogram/build #可选,程序中有相对目录就必须有 Categories=Utility; #可选
关键点:
-
Exec=必须使用 绝对路径(不能使用~或相对路径)。 -
如果程序需要终端交互(如打印日志),
Terminal=true,否则false。
此时桌面上应该有了一个为MyApp的图标,带一个小叉号。
2、为desktop文件赋予权限,打开终端
3 图标右键-允许运行
此时程序应该就能启动了。
4、需要注意的问题
-
如果程序代码中使用 相对路径(如
"./fonts/xxx.ttf"),则程序运行时的工作目录(Working Directory)必须正确。 -
解决方法:在
.desktop文件中指定工作目录(Path=):[Desktop Entry] Exec=/path/to/your/program Path=/path/to/your/program_dir # 设置工作目录为程序所在文件夹
.desktop 文件的 Exec= 必须使用 绝对路径,例如:
ini
Exec=/home/username/projects/my_app # ✅ 正确 Exec=~/projects/my_app # ❌ 错误(不能用 ~) Exec=./my_app # ❌ 错误(不能用相对路径)
5、给程序赋予root权限
因为我的程序需要root权限,需要sudo,所以exec改为:
Exec=sudo /home/zhangxiaomeng/myprogram/build/MCUViewer
Terminal=true
终端改为True,来输入密码。
因为我的程序中有相对路径,用sudo后path被改变了,设置的path无效,所以又改了一下:
Exec=sudo -E /home/zhangxiaomeng/myprogram/build/MCUViewer
Terminal=true
这样就能用了,但是需要终端输入密码,体验感不好。
6、root免密设置
终端输入:
echo "$USER ALL=(root) NOPASSWD:/home/zhangxiaomeng/job/MCUViewer/build/MCUViewer" | sudo tee /etc/sudoers.d/run_my_program
这时双击桌面快捷方式,没有反应,在终端输入测试,提示“sudo:无权保留环境”

实在没办法,我就把程序里的相对路径改成绝对路径,desktop改为
Exec=sudo /home/zhangxiaomeng/myprogram/build/MCUViewer
Terminal=false
成功运行!
1479

被折叠的 条评论
为什么被折叠?



