catkin_make失败了,然后去github找到下载,还是不行怎么办呀
-
-
@15136752158 你放的位置不一定在要找的目录中,关于g++路径设置可以参考文章
原文链接: https://fishros.com/d2lros2/#/humble/chapt2/basic/1.使用g++编译ROS2节点
2.2 编译
接着我们使用g++来编译
first_node
节点。正常的话一定会报错。g++ first_ros2_node.cpp
报错内容如下:
root@490925f19143:~/d2lros2/d2lros2/chapt2/basic# g++ first_ros2_node.cpp first_ros2_node.cpp:3:10: fatal error: rclcpp/rclcpp.hpp: No such file or directory 3 | #include "rclcpp/rclcpp.hpp" | ^~~~~~~~~~~~~~~~~~~ compilation terminated.
一定要记住这个错误
No such file or directory
,这将是你接下来机器人学习工作生涯中最常见的错误之一。接着小鱼来说说错误原因和解决方案。
原因我们在代码里包含了"rclcpp/rclcpp.hpp"头文件,但是g++找不到这个头文件,解决方法就是告诉g++这个头文件的目录。
首先我们要找到这个头文件在哪里,这个头文件是ROS2的客户端库,其地址肯定在ROS2的安装目录下,即
/opt/ros/humble/include/rclcpp
。cd /opt/ros/humble/include/rclcpp ls rclcpp/* | grep rclcpp.h
ls指令列出命令 | grep rclcpp.h 是对列出的结果进行过滤,只显示包含
rclcpp.h
的行。使用上面的指令,可以看到这个文件确实在这里。
接着我们可以用-I(大写i)来为g++指定这个目录,然后再次运行,你会发现依然报错
g++ first_ros2_node.cpp -I /opt/ros/humble/include/rclcpp/