news 2026/7/12 5:20:43

Sophus 1.22.4 与 Eigen 3.3.4 环境配置:Ubuntu 20.04 下 3 步解决 fmt 依赖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Sophus 1.22.4 与 Eigen 3.3.4 环境配置:Ubuntu 20.04 下 3 步解决 fmt 依赖

Sophus 1.22.4 与 Eigen 3.3.4 环境配置:Ubuntu 20.04 下 3 步解决 fmt 依赖

在视觉SLAM开发中,Sophus库作为李群李代数的重要实现工具,其环境配置往往是初学者的第一道门槛。本文将针对《视觉SLAM十四讲》第二版第4章代码实践中最常见的环境搭建难题——Sophus模板库与fmt的版本兼容性问题,提供一套清晰的Ubuntu 20.04解决方案。不同于单纯的理论讲解,我们聚焦于三个关键步骤的实操细节,确保读者能快速搭建可用的开发环境。

1. 环境准备与依赖检查

在开始安装前,我们需要确保系统具备必要的编译工具和基础依赖。打开终端执行以下命令:

sudo apt update sudo apt install -y build-essential cmake git libeigen3-dev

关键版本验证

  • Eigen库版本必须≥3.3.4,可通过以下命令验证:
    cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION_STRING
    若版本过低,需手动升级:
    git clone https://gitlab.com/libeigen/eigen.git cd eigen && mkdir build && cd build cmake .. && sudo make install

注意:Ubuntu 20.04默认源中的Eigen版本为3.3.7,通常无需额外升级。但若遇到Sophus编译错误,建议优先检查Eigen版本。

2. fmt 8.1.1 精准安装

Sophus 1.22.4对fmt库有严格的版本要求,必须使用8.1.1版本。以下是具体安装流程:

wget https://github.com/fmtlib/fmt/archive/refs/tags/8.1.1.tar.gz tar xvf 8.1.1.tar.gz cd fmt-8.1.1 mkdir build && cd build cmake -DFMT_TEST=OFF .. make -j$(nproc) sudo make install

常见问题排查

  • 若出现fmt/core.h相关错误,说明系统存在其他版本fmt冲突,需先卸载:
    sudo apt purge -y libfmt-dev sudo rm -rf /usr/local/lib/cmake/fmt

3. Sophus 模板库编译与验证

完成前置依赖后,开始安装Sophus模板库:

git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout v1.22.4 mkdir build && cd build cmake -DBUILD_SOPHUS_TESTS=OFF .. make -j$(nproc) sudo make install

安装验证: 创建测试文件test_sophus.cpp

#include <sophus/so3.hpp> #include <iostream> int main() { Sophus::SO3d SO3_v = Sophus::SO3d::exp(Eigen::Vector3d(0.1, 0, 0)); std::cout << "SO3 matrix:\n" << SO3_v.matrix() << std::endl; return 0; }

对应的CMakeLists.txt配置:

cmake_minimum_required(VERSION 3.12) project(test_sophus) find_package(Sophus REQUIRED) add_executable(test_sophus test_sophus.cpp) target_link_libraries(test_sophus Sophus::Sophus fmt)

编译并运行测试:

mkdir build && cd build cmake .. && make ./test_sophus

4. 高级配置与问题解决方案

4.1 自定义安装路径

若需指定安装目录(如本地用户目录),可在cmake阶段添加:

cmake -DCMAKE_INSTALL_PREFIX=$HOME/local ..

随后需配置环境变量:

echo 'export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc

4.2 多版本共存管理

当系统需要多个Sophus版本时,推荐使用符号链接管理:

sudo ln -s /usr/local/lib/libSophus.so.1.22.4 /usr/lib/libSophus.so

4.3 与Pangolin的协同配置

若项目同时使用Pangolin可视化工具,CMake配置需包含:

find_package(Pangolin REQUIRED) target_link_libraries(your_target Sophus::Sophus Pangolin::Pangolin fmt )

5. 典型错误与修复方案

错误1Sophus::SO3d未定义引用

  • 原因:未链接fmt库
  • 修复:在target_link_libraries中添加fmt

错误2Eigen::MatrixBase相关模板错误

  • 原因:Eigen版本不匹配
  • 修复:强制指定Eigen路径:
    include_directories(/usr/include/eigen3)

错误3:C++17特性缺失

  • 修复:在CMake中启用C++17:
    set(CMAKE_CXX_STANDARD 17)

通过以上步骤,开发者可以快速搭建稳定的Sophus开发环境。实际项目中,建议将相关依赖版本固定写入项目文档,避免后续团队协作时的环境不一致问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 5:19:53

华为Auth-Http Server 1.0 漏洞检测:3步编写Nuclei POC,精准识别高危文件读取

华为Auth-Http Server 1.0漏洞自动化检测实战指南漏洞背景与自动化检测价值华为Auth-Http Server 1.0是一款广泛应用于企业级身份认证场景的服务器软件&#xff0c;近期曝出的任意文件读取漏洞允许攻击者通过构造特定HTTP请求访问服务器上的敏感文件。虽然该漏洞仅限于读取/etc…

作者头像 李华
网站建设 2026/7/12 5:18:34

瑞萨CS+ for CC中断向量配置详解:以UART0接收为例的3处关键修改

瑞萨CS for CC中断向量配置实战&#xff1a;UART0接收中断的黄金三步骤当你在瑞萨RH850项目中第一次尝试配置UART接收中断时&#xff0c;是否遇到过这样的困境——明明按照手册修改了寄存器&#xff0c;但中断就像石沉大海毫无反应&#xff1f;问题的根源往往不在外设配置本身&…

作者头像 李华
网站建设 2026/7/12 5:18:31

Tabby 插件生态深度评测:5款核心插件提升终端效率200%

Tabby 插件生态深度评测&#xff1a;5款核心插件提升终端效率200%在终端工具的选择上&#xff0c;效率提升往往来自那些被忽视的细节。Tabby 作为一款现代化的终端模拟器&#xff0c;其真正的威力不仅在于基础功能的完善&#xff0c;更在于通过插件生态实现的效率倍增。本文将深…

作者头像 李华
网站建设 2026/7/12 5:18:19

MatAnyone实战指南:5分钟掌握专业级AI视频抠像技术

MatAnyone实战指南&#xff1a;5分钟掌握专业级AI视频抠像技术 【免费下载链接】MatAnyone [CVPR 2025] MatAnyone: Stable Video Matting with Consistent Memory Propagation 项目地址: https://gitcode.com/gh_mirrors/ma/MatAnyone MatAnyone是一个基于CVPR 2025的稳…

作者头像 李华
网站建设 2026/7/12 5:18:16

Umi-OCR:三步搞定图片转文字,免费离线更安全

Umi-OCR&#xff1a;三步搞定图片转文字&#xff0c;免费离线更安全 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语…

作者头像 李华