rosrun运行C++文件报syntax error near unexpected token错误如何解决
问题根因
你遇到的报错和C++代码语法无关,核心是调用方式错误:
rosrun的作用是查找ROS功能包下的可执行文件并运行,不支持直接执行C++源码文件- 当前报错是Shell将
.cpp文件误识别为Shell脚本解析,自然无法识别C++语法规则,才抛出了语法错误提示
修复步骤
- 打开
myrobot功能包下的CMakeLists.txt,添加C++节点的编译规则:
# 确保find_package段已经引入roscpp、std_msgs依赖 find_package(catkin REQUIRED COMPONENTS roscpp std_msgs ) # 添加以下两行编译规则,路径替换为你keys.cpp的实际存放路径 add_executable(keyboard_node scripts/Controls/Keys.cpp) target_link_libraries(keyboard_node ${catkin_LIBRARIES})
- 回到ROS工作空间根目录执行编译并刷新环境变量:
catkin_make # 若使用catkin tools则执行 catkin build myrobot source devel/setup.bash
- 编译完成后调用生成的可执行文件即可:
rosrun myrobot keyboard_node
额外说明
只有Python编写的ROS节点支持直接rosrun运行源码文件,需要满足两个前提:给.py文件添加可执行权限、文件头部添加#!/usr/bin/env python3解释器声明;C++编写的ROS节点必须经过编译生成可执行文件后才能运行。
内容的提问来源于stack exchange,提问作者NotALolicon
相关产品推荐
相关产品推荐

