Ubuntu18.04安装Ceres,图文详解
Posted 振华OPPO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu18.04安装Ceres,图文详解相关的知识,希望对你有一定的参考价值。
《视觉SLAM14讲》的第6章里面,用到了Ceres库,按照本书3rdparty提供的资源编译时,会报错,原因是和eigen3版本发生冲突。网上很多解决方法是重装eigen,尝试后也未解决,而且这种方法是舍近求远了。明明ceres只是编译失败,换个合适的版本重新编译,然后安装就OK了。不需要删除eigen,然后再编译安装eigen,多麻烦。
报错信息 |
---|
In file included from /usr/local/include/eigen3/Eigen/Core:348:0,
from /home/ubuntu/cartographer/ceres-solver-1.11.0/include/ceres/jet.h:165,
from /home/ubuntu/cartographer/ceres-solver-1.11.0/internal/ceres/jet_test.cc:31:
/usr/local/include/eigen3/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::promote_scalar_arg<ceres::Jet<double, 2>, Eigen::Matrix<ceres::Jet<double, 2>, 2, 2>, false>’:
/usr/local/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h:50:1: required by substitution of ‘template<class T> typename Eigen::internal::enable_if<true, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<typename Eigen::internal::promote_scalar_arg<ceres::Jet<double, 2>, T, Eigen::internal::has_ReturnType<Eigen::ScalarBinaryOpTraits<T, ceres::Jet<double, 2>, Eigen::internal::scalar_product_op<T, ceres::Jet<double, 2> > > >::value>::type, ceres::Jet<double, 2> >, const typename Eigen::internal::plain_constant_type<Eigen::Matrix<ceres::Jet<double, 2>, 2, 1, 0, 2, 1>, typename Eigen::internal::promote_scalar_arg<ceres::Jet<double, 2>, T, Eigen::internal::has_ReturnType<Eigen::ScalarBinaryOpTraits<T, ceres::Jet<double, 2>, Eigen::internal::scalar_product_op<T, ceres::Jet<double, 2> > > >::value>::type>::type, const Eigen::Matrix<ceres::Jet<double, 2>, 2, 1, 0, 2, 1> > >::type Eigen::operator*(const T&, const StorageBaseType&) [with T = Eigen::Matrix<ceres::Jet<double, 2>, 2, 2>]’
/home/ubuntu/cartographer/ceres-solver-1.11.0/internal/ceres/jet_test.cc:459:12: required from here
/usr/local/include/eigen3/Eigen/src/Core/util/XprHelper.h:64:8: error: no type named ‘Literal’ in ‘struct Eigen::NumTraits<ceres::Jet<double, 2> >’
struct promote_scalar_arg<S,T,false> : promote_scalar_arg_unsupported<S,T,typename NumTraits<S>::Literal> ;
解决方法 |
---|
1、访问源代码网址:https://github.com/ceres-solver/ceres-solver,在右侧Tags下找到1.14.0的压缩包进行下载(tar.gz和zip都可以)。
2、安装ceres相关依赖:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
注意,书上包名是libcxsparse3.1.2,但是ubuntu从18.04开始往后都是libcxsparse3
3、解压压缩包,在终端进入该目录,然后新建build文件夹,进入build中:
tar -zxvf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0/
mkdir build
cd build/
4、cmake命令根据CMakeLists.txt对工程进行分析,make根据生成的Makefile文件对工程进行编译。最后make install安装即可!
cmake ..
make
sudo make install
像下面这样就是编译成功:
5、安装也是非常快的。安装完成后,可以在/usr/local/include/ceres下找到Ceres的头文件,并在/usr/local/lib/下找到名为libceres.a的库文件。如果能找到就代表安装成功了。
以上是关于Ubuntu18.04安装Ceres,图文详解的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu18.04安装nvidia驱动,3种方式图文详解+卸载教程
Ubuntu18.04安装PCL 1.9.1(图文详解,附踩坑和测试)