home/ros/catkin_ctr/build/mavlink/development/../mavlink_types.h:28: error: "MAVLINK_CORE_HEADER_LEN" redefined [-Werror] 28 | #define MAVLINK_CORE_HEADER_LEN 9 ///< Length of core header (of the comm. layer) | compilation terminated due to -Wfatal-errors. cc1plus: all warnings being treated as errors make[2]: *** [PX4-Autopilot/src/modules/mavlink/CMakeFiles/modules__mavlink.dir/build.make:81:PX4-Autopilot/src/modules/mavlink/CMakeFiles/modules__mavlink.dir/mavlink_command_sender.cpp.o] 错误 1 make[1]: *** [CMakeFiles/Makefile2:16108:PX4-Autopilot/src/modules/mavlink/CMakeFiles/modules__mavlink.dir/all] 错误 2 make: *** [Makefile:163:all] 错误 2
时间: 2023-08-16 11:04:40 浏览: 142
这是一个编译错误,提示了一个宏被重新定义了。具体的错误信息是:
```
home/ros/catkin_ctr/build/mavlink/development/../mavlink_types.h:28: error: "MAVLINK_CORE_HEADER_LEN" redefined [-Werror]
28 | #define MAVLINK_CORE_HEADER_LEN 9 ///< Length of core header (of the comm. layer)
```
这个错误可能是由于两个头文件中都定义了同一个宏而引起的。你需要检查一下项目中是否有重复的定义,然后将其删除或者修改。另外,你也可以尝试关闭编译器的 `-Wfatal-errors` 选项,这样可以使编译器忽略警告并继续编译。
相关问题
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkin_package.cmake:108 (message): catkin_package() called with unused arguments: ... Call Stack (most recent call first): /opt/ros/noetic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) precise_land/CMakeLists.txt:15 (catkin_package) -- Configuring incomplete, errors occurred! See also "/home/ros/catkin_ctr/build/CMakeFiles/CMakeOutput.log". See also "/home/ros/catkin_ctr/build/CMakeFiles/CMakeError.log". make: *** [Makefile:3358:cmake_check_build_system] 错误 1 Invoking "make cmake_check_build_system" failed
这个错误可能是因为`CMakeLists.txt`中的`catkin_package`宏调用了未使用的参数。你可以检查`CMakeLists.txt`文件中的`catkin_package`宏是否正确添加了需要依赖的消息类型,例如:
```
catkin_package(
...
CATKIN_DEPENDS quadrotor_msgs nav_msgs
...
)
```
如果没有正确添加需要依赖的消息类型,就会出现类似的错误。你可以将`catkin_package`宏中未使用的参数删除或者添加正确的参数,然后重新编译你的ROS程序。
/home/ros/catkin_ctr/src/precise_land/src/traj_pub.cpp:2:10: fatal error: home/ros/catkin_ctr/src/ego-planner-swarm/src/uav_simulator/Utils/quadrotor_msgs/PositionCommand.h: 没有那个文件或目录 2 | #include <home/ros/catkin_ctr/src/ego-planner-swarm/src/uav_simulator/Utils/quadrotor_msgs/PositionCommand.h>
这个错误提示显示编译器找不到quadrotor_msgs包中的`PositionCommand.h`头文件,这可能是因为路径设置不正确导致的。
在头文件中使用了绝对路径`home/ros/catkin_ctr/src/ego-planner-swarm/src/uav_simulator/Utils/quadrotor_msgs/PositionCommand.h`来引用`PositionCommand.h`文件,这是不正确的做法。正确的方式是使用相对路径或者使用ROS的`roslib`库来引用该头文件。
如果`PositionCommand.h`文件确实位于`quadrotor_msgs`包中,可以尝试以下两种方法来解决该问题:
1. 使用相对路径引用头文件:
在头文件中使用相对路径`../Utils/quadrotor_msgs/PositionCommand.h`来引用`PositionCommand.h`文件,这个路径是相对于当前文件的路径。这种方式可以避免使用绝对路径,避免因为路径错误导致编译错误。
2. 使用ROS的`roslib`库引用头文件:
在头文件中使用ROS的`roslib`库来引用`PositionCommand.h`文件,这个库提供了一些常用的ROS函数和宏定义。可以使用以下代码来引用该头文件:
```
#include <ros/package.h>
#include <quadrotor_msgs/PositionCommand.h>
```
这个方式可以避免使用路径问题导致的编译错误,同时也更加灵活,可以适用于不同的ROS工作空间和路径配置。
需要注意的是,如果使用了相对路径引用头文件,需要确认当前文件的路径和quadrotor_msgs包的路径是否正确,否则仍然会出现编译错误。
阅读全文