一、相关依赖安装
在安装Sophus之前,需要先完成Eigen和fmt库的安装,相关安装方法及报错解决可以参考我之前写的博客,如下所示:
【已解决】编译报错:fatal error: Eigen/Core: 没有那个文件或目录 #include <Eigen/Core>https://blog.csdn.net/qq_44339029/article/details/142343425?spm=1001.2014.3001.5501【已解决】Ubuntu20.04安装fmt编译报错:error: no matching function for call to ‘fmt::v11::formatter的解决方法
https://blog.csdn.net/qq_44339029/article/details/142418722?spm=1001.2014.3001.5501
二、安装Sophus
在终端输入以下指令,从github克隆Sophus到本地
git clone https://github.com/strasdat/Sophus.git
然后依次执行以下指令进行编译安装
cd Sophus/
mkdir build
cd build
cmake ..
make
sudo make install
三、相关报错及解决方法
我在执行上述过程中的cmake .. 指令时,产生如下报错,
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):CMake 3.24 or higher is required. You are running version 3.16.3-- Configuring incomplete, errors occurred!
报错原因很简单,这个包需要的的CMakelist编译文件中标注的CMake最小版本是于3.24,而我们的CMake是3.16,不符合要求,需要升级CMake版本
注:在升级CMake版本的时候,网上很多教程说要先卸载之前的版本,然后再更新更高版本的cmake,这里巨坑,因为一旦卸载旧版本,系统里原先经过CMake的文件也一并会被删除,包括安装的ROS等,我之前执行卸载CMake指令的时候,系统提示我会释放200多MB的空间,当时没注意,还以为CMake本来就挺大,卸完了才发现,好家伙,这是给我一锅端了,安装的ROS啥的也都没了。。。。还好,我安装ROS比较熟练了,又花了5分钟把ROS装了回来
所以推荐不要卸载旧版本CMake,直接下载安装更高版本的cmake,然后建立软链接进行使用,流程如下:
1、去官网下载最新(或者你想要的版本)的CMake包,链接如下,对于不能通过官网下载的小伙伴,我把我下载下来的CMake3.30.3版本放在了这篇博客的绑定资源里面,有需要的自取
https://cmake.org/download/https://cmake.org/download/ 2、下载后解压,进行解压后得到的文件夹下,空白处右键,选择 在终端打开,在打开的终端下运行 ./configure 指令
./configure
3、按照提示,执行 make 指令
make
4、执行sudo make install指令进行安装
sudo make install
5、然后使用命令 cmake --version查看当前CMake版本,正常情况下,可以发现CMake版本已经更新为了我们刚安装的版本
cmake --version
如果,此时,你的版本依然显示旧版本或者提示CMake Error: Could not find CMAKE_RO0T !!! 可以执行以下语句建立软连接来修复该问题(因为我没有出现这种情况,该方法我暂时没有测试过)
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 –force
6、到这里CMake的升级就完成了,然后我们就可以继续进行Sophus的安装了,我们返回Sophus的build文件下,重新执行cmake ..指令
cmake ..
7、然后就行执行前面第二部分介绍过的流程中的make和sudo make install指令了
至此,Sophus就成功的安装完成了
附:其他报错
fatal error: rapidjson/document.h: 没有那个文件或目录 11 | #include "rapidjson/document.h"
执行以下指令安装缺失的依赖即可
sudo apt-get install rapidjson-dev