鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    执行 g++ first_ros2_node.cpp -I /opt/ros/jazzy/include/rclcpp/时,没有出现教程上的报错

    已定时 已固定 已锁定 已移动
    动手学ROS2
    ros2 ros2 linux
    3
    3
    270
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 3
      3227255187
      最后由 编辑

      一的第2章编程基础部分的1.使用g++编译ROS2节点中,在指令
      cd /opt/ros/jazzy/include/rclcpp(我是jazzy,就把humble都改了)
      ls rclcpp/* | grep rclcpp.h
      执行后可以找到rclcpp/rclcpp.hpp
      但下一步执行 g++ first_ros2_node.cpp -I /opt/ros/jazzy/include/rclcpp/时,没有出现教程上的报错(rcl/guard_condition.h),输出依然是
      cc1plus: fatal error: first_ros2_node.cpp: No such file or directory
      compilation terminated.
      之后的按教程,执行结果就都不一样了,基本上都是这个输出
      请您指教,谢谢

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        从您提供的信息来看,您在尝试编译一个ROS 2节点时遇到了几个问题。首先,让我们逐一解决这些问题:

        1. 关于编译错误 cc1plus: fatal error: first_ros2_node.cpp: No such file or directory:
          这个错误表明编译器找不到名为 first_ros2_node.cpp 的文件。这通常意味着您当前的工作目录(即您执行 g++ 命令时所在的目录)中没有这个文件,或者文件名有误。

          解决步骤:

          • 确保 first_ros2_node.cpp 文件确实存在于您尝试编译它的目录中。
          • 使用 ls 命令查看当前目录的文件列表,确认 first_ros2_node.cpp 是否存在。
          • 如果文件不在当前目录,您需要切换到包含该文件的目录,或者使用文件的完整路径来编译。
        2. 关于 -I 标志的使用:
          在您的编译命令中,-I 标志用于指定头文件的搜索路径。但是,您提供的路径 /opt/ros/jazzy/include/rclcpp/ 看起来是不正确的,因为 rclcpp/ 目录通常只包含 rclcpp 相关的头文件,而不是所有需要的头文件。

          解决步骤:

          • 通常,您应该使用 /opt/ros/jazzy/include 作为 -I 的参数,这样编译器可以在这个目录下找到所有相关的头文件,包括 rclcpp、rcl 等。
          • 修改命令为:g++ first_ros2_node.cpp -I /opt/ros/jazzy/include
        3. 关于教程中的报错:
          您提到教程中的报错是关于 rcl/guard_condition.h 文件找不到。这通常是因为缺少某些依赖或者头文件路径设置不正确。但是,由于您还没有成功编译 first_ros2_node.cpp,因此这个报错尚未发生。

          后续步骤:

          • 一旦您成功编译了 first_ros2_node.cpp,如果确实遇到了关于 rcl/guard_condition.h 的错误,您可能需要检查您的 ROS 2 安装是否完整,或者是否有其他依赖问题。
        4. 关于教程的执行:
          请确保您完全按照教程的步骤操作,包括创建文件、编写代码等。如果教程中有任何步骤缺失或不清楚,可能会导致问题。

        总结:

        • 确认 first_ros2_node.cpp 文件的存在和位置。
        • 修改 -I 参数为 /opt/ros/jazzy/include。
        • 逐步执行教程,确保每个步骤都正确无误。

        希望这些信息能帮助您解决问题!如果还有其他疑问,请继续提问。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 1
          wisyu
          最后由 编辑

          这个是我根据错误提示一步步试出来的,可以运行

          g++ test.cpp \
          -I/opt/ros/jazzy/include/rclcpp/ \
          -I /opt/ros/jazzy/include/rcl/ \
          -I /opt/ros/jazzy/include/rcutils/ \
          -I /opt/ros/jazzy/include/rmw \
          -I /opt/ros/jazzy/include/rcl_yaml_param_parser/ \
          -I /opt/ros/jazzy/include/rosidl_runtime_c \
          -I /opt/ros/jazzy/include/rosidl_typesupport_interface \
          -I /opt/ros/jazzy/include/rcpputils \
          -I /opt/ros/jazzy/include/builtin_interfaces \
          -I /opt/ros/jazzy/include/rosidl_runtime_cpp \
          -I /opt/ros/jazzy/include/tracetools \
          -I /opt/ros/jazzy/include/rcl_interfaces \
          -I /opt/ros/jazzy/include/libstatistics_collector \
          -I /opt/ros/jazzy/include/statistics_msgs \
          -I /opt/ros/jazzy/include/service_msgs \
          -I /opt/ros/jazzy/include/type_description_interfaces \
          -I /opt/ros/jazzy/include/rosidl_dynamic_typesupport \
          -I /opt/ros/jazzy/include/rosidl_typesupport_introspection_cpp \
          -L /opt/ros/jazzy/lib/ \
          -lrclcpp -lrcutils
          
          1 条回复 最后回复 回复 引用 0
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS