1. 强烈建议使用命令行安装:
sudo apt-get install libeigen3-dev
2. 我在运行DS-SLAM时出现了 [TUM-2] process has died 的问题,有的博客里说要安装3.2版本的eigen,于是我就卸载了使用上边命令行安装的 eigen 3.3.7 ,方法如下方连接:
ubuntu16.04卸载eigen_追求卓越583的博客-CSDN博客_ubuntu卸载eigen
但是,此时再运行 sudo apt-get install libeigen3-dev 会提示已经是最新的eigen了,无法使用命令行安装,不知道这是为啥,有知道的小伙伴请帮我解释一下。
然后就用源码的方式安装 eigen3.2:
【环境搭建】ubuntu18.04安装Eigen3_.云哲.的博客-CSDN博客
注意 :
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
这条命令是把头文件安装在 /usr/local/include 路径下,但是在编译 g2o orb-slam2等源码时还是会提示找不到库,这时就要在CMakeLists.txt 里显式地设置头文件位置:
set(EIGEN_INCLUDE_DIR "/usr/local/include ")
但是,问题又来了!
DS-SLAM源码里同样使用了PCL 和Pangolin,它俩又会找不到eigen!
我的解决方式是:
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
改成 :sudo cp -r /usr/local/include/eigen3(注意,没到Eigen)/usr/include
再编译,会出现:
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h:340:21: error: ‘Index’ is not a member of ‘Eigen’ 340 | for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)
解决办法:/usr/include/pcl-1.10/pcl/filters/voxel_grid.h 下的 Eigen::Index 改成 int
但是!问题又回到了原点,DS-SLAM运行10帧左右还是会出现 [TUM-2] process has died ,所以应该不是eigen版本的问题,但我健壮的 eigen3.3.7已经卸载了,无语~
3. 最后补充一下,我再编译ceres时,无论用什么方式都找不到eigen库,唯有重新安装eigen3.3.7,可能与最新版的ceres库在CMakeLists.txt里指定了Eigen3版本有关:find_package(Eigen3 3.3 REQUIRED)