Ceres安裝報錯「找不到要求版本3.3的Eigen3」解決方法

問題

在安裝Ceres庫cmake時報錯提示找不到Eigen3.3。git

Could not find a configuration file for package "Eigen3" that is compatible with requested version "3.3".gitlab

在對應的CMakeLists.txt中能夠看到,因爲BA優化在小於3.3.4版本的Eigen中可能失敗,因此要求Eigen的版本不小於3.3.4。優化

Eigen的版本能夠在 /usr/include/eigen3/Eigen/src/Core/util/Macros.h 中查看,個人版本爲3.2.9,因此在 find_package 3.3.x版本的Eigen時會出現錯誤。ui

解決方法

卸載原來的Eigen,安裝3.3.4以後的新版本。spa

首先卸載Eigen,定位到相關文件,直接手動刪除。.net

sudo updatedb locate eigen3 sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums

而後下載安裝3.3.4版本以後的Eigen,apt-get不能指定Eigen版本,這裏推薦手動安裝。code

下載地址  https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz 。我下了最新的3.3.7版本。blog

安裝依賴項md5

 1 sudo apt-get install libopenblas-dev  2 sudo apt-get install --no-install-recommends libboost1.58-all-dev  3 sudo apt-get install libx11-dev  4 sudo apt-get install libgl1-mesa-dev  5 sudo apt-get install libglu1-mesa-dev  6 sudo apt-get install freeglut3-dev  7 sudo apt-get install doxygen  8 sudo apt-get install cmake  9 sudo wget https://nchc.dl.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0.tgz --no-check-certificate 10 sudo tar -xzvf glew-2.1.0.tgz 11 cd glew-2.1.0/ 12 sudo make 13 sudo make install 14 sudo ldconfig -v

安裝Eigen3.3.7get

1 mkdir build 2 cd build 3 cmake .. 4 make 5 sudo make install 6 sudo ldconfig -v

apt-get安裝eigen3的路徑爲 /usr/include/eigen3 ,這裏也保持一直;此外,需使用下面命令將Eigen映射到 /usr/include 路徑下,由於在不少程序中include時常用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>,不映射的話一些程序在編譯時會因找不到Eigen/Dense而報錯。

sudo cp -r /usr/local/include/eigen3 /usr/include/eigen3 sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

至此大功告成,如今再安裝Ceres就不會報錯了。

相關文章
相關標籤/搜索