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 …即可

  • 9
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值