编译ROS hector navigation时ceres_catkin找不到gflags库如何解决
报错修复方案
该报错的核心原因是ceres_catkin未在CMake配置阶段正确声明对gflags_catkin的前置依赖,仅添加头文件目录声明无法解决依赖查找问题,可按以下步骤依次修复:
- 步骤1:修正
ceres_catkin的CMakeLists.txt配置
在所有引用gflags_catkin、glog_catkin相关变量的代码之前,补充find_package声明,示例如下:
find_package(catkin REQUIRED COMPONENTS gflags_catkin glog_catkin # 此处保留你原有的其他catkin依赖项 )
同时在catkin_package配置段中导出上述依赖:
catkin_package( CATKIN_DEPENDS gflags_catkin glog_catkin # 此处保留你原有的其他catkin_package配置项 )
- 步骤2:补全
ceres_catkin的package.xml依赖声明
添加对应构建和运行时依赖:
<build_depend>gflags_catkin</build_depend> <build_depend>glog_catkin</build_depend> <exec_depend>gflags_catkin</exec_depend> <exec_depend>glog_catkin</exec_depend>
- 步骤3:调整编译顺序,优先编译依赖包
为避免编译顺序错乱导致依赖未就绪,先在工作空间根目录执行指令单独编译依赖:catkin_make --only-pkg-with-deps gflags_catkin glog_catkin
依赖编译完成后,再执行正常的全工作空间编译指令即可。
如果使用catkin_tools编译工具,将上述指令替换为catkin build gflags_catkin glog_catkin即可。 - 步骤4:缺失系统依赖的兜底修复
如果执行上述步骤后仍报错,直接安装对应预编译依赖包,Ubuntu系统执行指令如下(将<ROS版本>替换为实际使用的版本,如noetic、melodic):sudo apt install libgflags-dev libgoogle-glog-dev ros-<ROS版本>-gflags-catkin ros-<ROS版本>-glog-catkin
内容的提问来源于stack exchange,提问作者唐啟實
相关产品推荐
相关产品推荐

