反复踩坑的ceres安装-----ubuntu18.04
笔者最近跑Lio-sam,对imu内参进行标定需要用到ceres库。笔者环境中安装了eigen3.3.4,eigen3.3.2以上可以安装ceres1.14版本,因此笔者从git上下载了ceres1.14,开始了踩坑之旅。1、源码下载ceres的git仓库:https://github.com/ceres-solver/ceres-solver在tag里选择1.14版本下载,找不到tag参照上篇博
笔者最近跑Lio-sam,对imu内参进行标定需要用到ceres库。笔者环境中安装了eigen3.3.4,eigen3.3.2以上可以安装ceres1.14版本,因此笔者从git上下载了ceres1.14,开始了踩坑之旅。
1、源码下载
ceres的git仓库:https://github.com/ceres-solver/ceres-solver
在tag里选择1.14版本下载,找不到tag参照上篇博客里的截图。
2、依赖安装
有些博客会告诉你使用如下命令安装依赖:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
但是这句命令在ubuntu18.04下会报如下错误:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
E: 无法定位软件包 libcxsparse3.1.2
E: 无法按照 glob ‘libcxsparse3.1.2’ 找到任何软件包
E: 无法按照正则表达式 libcxsparse3.1.2 找到任何软件包
原因是ubuntu18.04中libcxsparse的版本号是3,因此正确命令如下:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
这个库版本号的对应关系如下:
libcxsparse3.1.2————————ubuntu14.04
libcxsparse3.1.4————————ubuntu16.04
libcxsparse3————————————ubuntu18.04
可以在这个网站输入库名查正确的版本:Ubuntu – Ubuntu Packages Search。堪称终极解决方案。
至于其他添加软件源之类的解决办法,经过测试都不可行。
3、ceres编译安装
解压ceres1.14,无所谓在哪个目录下面,进入解压后的文件夹,打开终端做如下操作是最稳妥的:
mkdir build
cd build
cmake ..
make -j3
make test
sudo make install
安装后打开/usr/local/include查看一下是否建立了ceres安装目录,此刻试图编译我要跑的标定包(依赖ceres),终于不报找不到ceres库的错了。下面是踩坑记录:
一开始使用网上的教程编译安装ceres失败,报错如下:
Could not find a package configuration file provided by "Ceres" with any of
the following names:CeresConfig.cmake
ceres-config.cmake
在系统目录中没有找到ceres的安装目录,判断是安装不成功,多方尝试没有好的解决办法,索性删了安装目录重新装。于是用下面命令安装:
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/ceres .. #前提是在local下自己建立了一个ceres目录
sudo make install
依然报上面的错误。说明没找到ceres库 ,在包的cmake文件中这样写:
include_directories("/usr/local/ceres/lib/cmake/Ceres")
或
set(Ceres_DIR /usr/local/ceres/lib/cmake/Ceres)
报错变成了这样:
In file included from /home/lisheng/catkin_ws/src/loam_livox-master/source/laser_mapping.cpp:37:0:
/home/lisheng/catkin_ws/src/loam_livox-master/source/laser_mapping.hpp:40:10:
fatal error: ceres/ceres.h: 没有那个文件或目录
#include <ceres/ceres.h>
^~~~~~~~~~~~~~~
compilation terminated.
实在不知道哪里出了问题,又删了安装目录用本节开头的步骤重新装,终于没有ceres报错了。
奇怪错误的背后一定有深刻的逻辑,可惜自己还是个菜鸟。
更多推荐
所有评论(0)