通过本地构建解决Cartographer编译中absl依赖缺失问题

我正在尝试在Ubuntu系统上编译Cartographer SLAM项目,执行catkin_make_isolated --install --use-ninja命令时遇到了报错。我首先确认了工作空间的结构,发现包含cartographer、cartographer_ros和ceres-solver等子项目。

当我执行构建命令时,系统提示Command 'catkin_make_isolated' not found。AI助手分析后指出,这是由于未设置ROS环境变量所致。在执行source /opt/ros/noetic/setup.bash后,命令可以正常执行。

构建过程开始后,报错信息显示:

复制代码
CMake Error at CMakeLists.txt:32 (find_package):
  By not providing "Findabsl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "absl", but
  CMake did not find one.

AI助手分析该错误,明确指出Cartographer需要Google Abseil C++库作为依赖,但系统中未安装。它检查了系统包管理器,未找到名为absl的包。

为了解决这个问题,AI助手建议从源码构建Abseil库。它首先检查了构建工具是否就绪,确认cmake、ninja、git均已安装。接着,它创建了一个新的临时目录来执行构建流程。

考虑到原工作空间中的abseil-cpp目录存在权限问题,无法直接使用,AI助手决定采用更安全的方案:在用户主目录下创建独立的构建环境。它编写并执行了一个自动化脚本,该脚本完成以下操作:

  1. 创建临时工作目录
  2. 从GitHub克隆Abseil仓库
  3. 切换到指定版本(215105818dfde3174fe799600bb0f3cae233d0bf)
  4. 配置构建路径,将安装目录指向/home/ruolin/cartographer_ws/local_absl
  5. 使用Ninja构建并安装

构建完成后,验证结果显示Abseil库已成功安装到指定路径,包括头文件和pkgconfig配置文件。

接下来,为了使Cartographer能够找到这个本地安装的Abseil库,AI助手指导我设置了CMAKE_PREFIX_PATH环境变量:

bash 复制代码
export CMAKE_PREFIX_PATH=/home/ruolin/cartographer_ws/local_absl:$CMAKE_PREFIX_PATH

再次尝试构建时,虽然解决了Abseil依赖问题,但出现了新的报错:

复制代码
CMake Error at cmake/modules/FindLuaGoogle.cmake:217 (MESSAGE):
  Did not find Lua >= 5.2.

AI助手分析后指出,缺少Lua开发库。它建议安装liblua5.3-dev包,并提供了相应的apt-get命令。

整个协作过程展示了高效的故障排查方法:通过逐步分析错误信息,定位根本原因,制定分步解决方案,并提供可重复使用的自动化脚本。这种方法避免了系统级安装可能带来的权限问题,同时确保了构建环境的隔离性和可复现性。

最终,通过本地构建Abseil库并正确配置环境变量,成功解决了Cartographer编译中的依赖问题,为后续的构建工作奠定了基础。

相关推荐
无足鸟ICT6 小时前
【RHCA+】vmstat命令(监控系统资源)
linux·服务器
垆边人似月.6 小时前
RDMA 文件传输踩坑(五):READY 发送成功后,为什么出现 Work Request Flushed Error?
服务器·网络·tcp/ip
闪亮的路灯6 小时前
Linux 安装mqtt服务mosquitto
linux·运维·服务器
HideF6 小时前
nmcli
linux·服务器·网络
小此方6 小时前
Re:Mysql数据库基础篇(八):详细讲解复合查询、多表查询、自连接、多行、多列子查询与合并查询
数据库·mysql
smile_life_7 小时前
MySQL 设置 防止账户被暴力破解
数据库·mysql
qetfw7 小时前
UOS DHCP Relay:跨网段分配与 IP、DNS、网关验证
linux·服务器·网络·tcp/ip·uos
滕州市燕猫虎计算机科技工作室个体工商户8 小时前
MySQL、MVCC、多版本并发控制
数据库·mysql·mvcc·数据库事务
明航咨询-陈老师8 小时前
ITSS运行维护服务能力成熟度认证技术纵深:标准模型、等级路径、2026审核趋势与CS/CMMI对比
服务器·数据库·cmmi
szxinmai主板定制专家8 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x