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_TESTOFF .. make -j$(nproc) sudo make install常见问题排查若出现fmt/core.h相关错误说明系统存在其他版本fmt冲突需先卸载sudo apt purge -y libfmt-dev sudo rm -rf /usr/local/lib/cmake/fmt3. Sophus 模板库编译与验证完成前置依赖后开始安装Sophus模板库git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout v1.22.4 mkdir build cd build cmake -DBUILD_SOPHUS_TESTSOFF .. 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_sophus4. 高级配置与问题解决方案4.1 自定义安装路径若需指定安装目录如本地用户目录可在cmake阶段添加cmake -DCMAKE_INSTALL_PREFIX$HOME/local ..随后需配置环境变量echo export LD_LIBRARY_PATH$HOME/local/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc4.2 多版本共存管理当系统需要多个Sophus版本时推荐使用符号链接管理sudo ln -s /usr/local/lib/libSophus.so.1.22.4 /usr/lib/libSophus.so4.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)错误3C17特性缺失修复在CMake中启用C17set(CMAKE_CXX_STANDARD 17)通过以上步骤开发者可以快速搭建稳定的Sophus开发环境。实际项目中建议将相关依赖版本固定写入项目文档避免后续团队协作时的环境不一致问题。