最近在学习SLAM,跟随的是高翔博士的《视觉SLAM十四讲》,其中遇到一个问题,就是在安装Sophus的时候,要求Eigen库的版本必须在3.3以上,而我查看了自己的Eigen库,3.2.92!你说气不气人,没办法,只能更新。
以上为问题背景,有些人可能觉得这问题,直接sudo apt upgrade一下不就好了,我也想他这么简单,因为我用的是Ubuntu 16.04,可能它还没有在apt中发布最新版本,我直接用sudo apt install libeigen3-dev安装,其最新版本就是3.2.92,所以我只能用源码安装,过程虽不算艰辛,但也值得记录。
注意,我所讲的方法,只适用于用cmake的同志们,虽然我觉得用eigen库,应该都要用cmake
一、Ubuntu下查看自己的Eigen版本
这里我提供多个方法。
- 查找已安装Eigen的目录,/usr/include/eigen3/Eigen/src/Core/util/Macros.h,找到上述文件,一般情况下安装是在/usr/include中的
如图,我的Eigen版本是更新到3.3.7了,是目前最新版本。 - 如果你的电脑安装了cmake,也可以通过CeresConfig.cmake文件或Eigen3Config.cmake进行查看
/usr/lib/cmake/eigen3/Eigen3Config.cmake
/usr/local/lib/cmake/Ceres/CeresConfig.cmake
二、通过源码安装更新Eigen库
- 首先通过官网下载源码:http://eigen.tuxfamily.org/index.php?title=Main_Page#Compiler_support直接下载tar.gz包就可以,然后用
sudo tar -xzvf eigen-eigen-5a0156e40feb.tar.gz -C /usr/include
解压到/usr/include
- 然后将原来的eigen3文件夹改名为eigen_[版本号],然后将这个新的eigen文件夹命名为eigen3,命令如下:
sudo mv eigen3 eigen3.2.92
sudo mv eigen-eigen-5a0156e40feb eigen3
- 然后修改相应的cmake文件,要修改的主要有两个文件,也就是上述提到的寻找版本时的两个文件,以防万一,做修改之前最好备份。
进入/usr/lib/cmake/eigen3/
cd /usr/lib/cmake/eigen3/
sudo vim Eigen3Config.cmake
将上述显示版本的地方改为3,3,7
进入/usr/local/lib/cmake/Ceres/
cd /usr/local/lib/cmake/Ceres/
sudo vim CeresConfig.cmake
这是一个检验版本一致性的东西,然后进入之后,找到 set(CERES_EIGEN_VERSION 3.2.92),将这个版本修改为3.3.7
大功告成!然后当你再次用cmake的时候,find_package找到的就是3.3.7这个版本啦!!
友情提醒,当你找不到某个文件的时候,告诉你一个命令,及其有用
sudo find / -name [文件名]
这条命令是在全局搜索你要找的文件。