Windows11下rosrun无法运行C++版ROS Hello World程序求助
解决Windows下ROS
rosrun找不到可执行文件的问题 核心原因
你的可执行文件生成在build目录而非ROS默认识别的devel目录,导致环境变量没关联到该文件——ROS只会从devel/lib/<包名>或install/lib/<包名>路径读取可执行文件。
分步解决方法
1. 检查CMakeLists.txt配置
确保功能包的CMakeLists.txt里有正确的安装指令:
- 确认已添加可执行文件编译指令:
add_executable(hello_world_node src/hello_world_node.cpp) # 替换成你的实际源文件路径 - 必须加上
install指令,把可执行文件复制到devel目录:install(TARGETS hello_world_node RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )
2. 重新编译并加载环境
- 打开ROS命令提示符,进入工作空间根目录:
cd c:\opt\ros\noetic\catkin_ws - 清理旧编译文件后重新编译:
catkin_make clean catkin_make - 加载
devel目录的环境变量(每个新终端都要执行):devel\setup.bat提示:如果用
catkin build替代catkin_make,就把上面的catkin_make换成catkin build再执行setup.bat。
3. 验证环境配置
执行以下命令确认ROS能识别你的包和可执行文件:
- 检查包是否在ROS路径中:
正常会输出rospack find hello_world_pkgc:\opt\ros\noetic\catkin_ws\src\hello_world_pkg - 检查可执行文件是否在指定路径:
能看到dir c:\opt\ros\noetic\catkin_ws\devel\lib\hello_world_pkghello_world_node.exe就说明配置有效。
4. 临时测试方案
如果以上步骤无效,可直接用绝对路径指定可执行文件运行:
rosrun hello_world_pkg c:\opt\ros\noetic\catkin_ws\devel\lib\hello_world_pkg\hello_world_node.exe
5. 多工作空间优先级检查
如果你有多个catkin工作空间,确保当前工作空间的setup.bat是最后加载的——ROS环境变量会覆盖之前的配置,必须保证你的自定义工作空间在ROS核心包之后加载。
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

