Ceres2.0.0报错:variable or field ‘it’ declared void,ceres和eigen版本分别回退为1.14.0和3.2.9

问题描述

在新的电脑(ubuntu16.04)上,上官网http://www.ceres-solver.org/installation.html安装了ceres,跑之前自己的代码时,发现类似下面的错误,一大堆,内存也会爆炸:

/usr/local/include/ceres/internal/parameter_dims.h:85:11: error: ‘integer_sequence’ is not a member of ‘std’

分析

我的包用了ceres,根据错误认为ceres有问题,发现现在ceres的版本是2.0.0而之前的是1.几的,所以想回退。

下载ceres 1.14的压缩文件,按照流程进行编译报错:

/home/seivl/Download/ceres-solver-1.14.0/internal/ceres/gtest/gtest.h:10445:35: error: variable or field ‘it’ declared void
   for (typename C::const_iterator it = container.begin();
                                   ^
internal/ceres/CMakeFiles/residual_block_test.dir/build.make:81: recipe for target 'internal/ceres/CMakeFiles/residual_block_test.dir/residual_block_test.cc.o' failed

估计是eigen的版本也要回退(ceres2.0.0需要3.3以后版本,我之前电脑是3.2.9)所以我得恢复到这样的状态:
eigen3.2.9—ceres1.14–my pakage

步骤

Eigen

先把eigen卸载,把/usr/include和/usr/local/include下面的Eigen和eigen3文件夹都删除:

sudo rm -rf /usr/include/Eigen /usr/include/eigen3  /usr/local/include/Eigen  /usr/local/include/eigen3  

参考文章:link
link下载对应版本的eigen压缩包,直接解压到对应位置就可以了
解压:

 sudo tar -xzvf eigen-3.2.9.tar.gz -C /usr/local/include

重命名:

sudo mv /usr/local/include/eigen-3.2.9 /usr/local/include/eigen3

复制:

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

为了程序能找的到,usr/include和/usr/local/include下面的Eigen和eigen3都要放好

Ceres

卸载原有ceres:

sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a

然后再开始编译ceres1.14.0:

tar zxf ceres-solver-1.14.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.14.0
make -j3
make test
make install

参考文章:

Eigen库安装(两种方式)
link
ubuntu卸载ceres
link

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值