desktop文件是什么
desktop文件是一个用来运行程序的快捷方式,为你的 Linux 应用创建 .desktop 文件
可在usr -> share -> applications
目录下看到*.desktop文件,复制一份到桌面,基本格式如下
[Desktop Entry]
Encoding=UTF-8
Name=test
Type=Application
Terminal=true
StartupNotify=true
Exec=/home/path/lowSpeedV/start.sh
Icon=/home/path/resources/images/logo.png
NoDisplay=false
只需修改Exec(指定启动脚本路径)Icon(快捷方式图标),其中Terminal用于指定启动时是否运行命令行,可在调试时选true,观察程序启动失败原因,调试时需在启动脚本中增加阻塞函数,否则命令行一闪而过,
编辑启动脚本
调试的主要原因是该方式启动的程序是独立的运行环境,可能有某些库或者包找不到导致程序启动失败,因此在启动失败时需要在启动脚本中设置各种环境
#!/bin/sh
# ---------------------------------------------------------------------
# CLion startup script.
# ---------------------------------------------------------------------
echo start
export LD_LIBRARY_PATH=/opt/ros/noetic/lib/:$LD_LIBRARY_PATH
/home/Desktop/project/lowSpeedV/devel/lib/lowSpeedV/lowSpeedV
echo $?
sleep 100
例如上文中的export LD_LIBRARY_PATH=/opt/ros/noetic/lib/:$LD_LIBRARY_PATH
,即无法找到ros相关动态库。
运行后有如下错误
[rospack] Error: package 'rviz' not found
[librospack]: error while executing command
[ WARN] [1698977373.827882538]: OGRE EXCEPTION(6:FileNotFoundException): '/ogre_media/plugins.cfg' file not found! in ConfigFile::load at /build/ogre-1.9-kiU5_5/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreConfigFile.cpp (line 81)
[ INFO] [1698977373.932631469]: Stereo is NOT SUPPORTED
[ INFO] [1698977373.932862530]: OpenGL device: llvmpipe (LLVM 12.0.0, 256 bits)
[ INFO] [1698977373.932956093]: OpenGl version: 3.1 (GLSL 1.4).
[rospack] Error: package 'rviz' not found
[librospack]: error while executing command
[rospack] Error: no such package media_export
[librospack]: error while executing command
[rospack] Error: package 'rviz' not found
[librospack]: error while executing command
terminate called after throwing an instance of 'pluginlib::ClassLoaderException'
what(): Unable to find package: rviz
Aborted (core dumped)
显然rviz包不存在,再打印echo $ROS_PACKAGE_PATH
,无内容。显然无ros环境,需要source /home/project/lowSpeedV/devel/setup.bash
,添加后可正常启动qt-ros-rviz程序,完成启动脚本如下
#!/bin/bash
# ---------------------------------------------------------------------
# CLion startup script.
# ---------------------------------------------------------------------
echo start
source /Desktop/project/lowSpeedV/devel/setup.bash
export LD_LIBRARY_PATH=/opt/ros/noetic/lib/:$LD_LIBRARY_PATH
/home/project/lowSpeedV/devel/lib/lowSpeedV/lowSpeedV
echo $?
echo ROS_PACKAGE_PATH
echo $ROS_PACKAGE_PATH
sleep 100