Ceres库安装踩坑(SLAM十四讲)

由于ceres库和eigen库有一定的版本对应关系,因此很容易在编译期间报错。
报错内容是:虽然找到了.cmake,但是版本不匹配,需要eigen3.2.92之类之类

之前通过Eigen的官网直接安装了Eigen3.3.7(采用3.3版本是为了和sophus所对应,教程)
但是Eigen3.3.7无法与ceres1.11.0对应(如果你是通过artographer安装的ceres,那么版本就为1.11.0)

因此,为了找到与Eigen3.3.7对应版本的ceres,可以直接在ceres官网上查找最新版本的ceres1.14.0进行安装,当然,直接git可能会慢,因此先下载安装包再进行安装。

由于Eigen3.3.7是最新的eigen稳定版本,所以它与最新的ceres稳定版本1.14.0对应肯定没有任何问题。

0.准备工作

  1. 删除掉一些旧版本ceres的文件,否则直接安装清理不掉,依然会报错
    ①/usr/local/include中的ceres文件夹直接删掉
    ②/usr/local/lib下的libceres.a
    ③/usr/local/lib/cmake/Ceres 下有关ceres的全都删掉
    ④/usr/local/share/Ceres 文件夹删掉

上面四点中,若是没有的话就不必删了
如果怕还有残余,则在终端:locate ceres 然后 locate Ceres 主要看usr底下还有没有关于ceres的,若有,必杀之

  1. 安装依赖库
    看ceres官网查看需要哪些依赖库(安装之前还是建议先locate一遍,看看是否已经安装过)

下面进行安装ceres1.14.0

1.下载ceres1.14.0压缩包并安装

  1. 下载链接:https://download.csdn.net/download/weixin_44684139/12249711

  2. 提取到此处,并进入文件夹,在终端打开

  3. 编译安装

mkdir build
cd build
cmake ..
make -j4
sudo make install

2.测试

CMakeLists.txt中:
(用的是slam十四讲ch6中的curvefitting代码)

# Ceres
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})

add_executable(ceresCurveFitting ceresCurveFitting.cpp)
target_link_libraries(ceresCurveFitting ${OpenCV_LIBS} ${CERES_LIBRARIES})

最终测试成功

3. 补充

如果依然报版本不匹配的错误,很有可能是准备工作中ceres的文件没删干净,记住那个CeresConfig.cmake文件一定要删掉,可以用locate位置,也可以在kdevelop的报错中双击点开文件。

若不想删除其他版本eigen,则修改ceres-solver-1.14.0-for-eigen/cmake/FindEigen.cmake文件中:

  list(APPEND EIGEN_CHECK_INCLUDE_DIRS
    /usr/local/include/eigen3
    /usr/local/homebrew/include # Mac OS X
    /opt/local/var/macports/software # Mac OS X.
    /opt/local/include)
    #/usr/include)

重新cmake …即可

你可能感兴趣的:(slam学习,ceres,solver,安装,冲突,3.3.7)