安装过程不易,记录以下。
首先是参照这个安装教程:
Ubuntu20.04安装Ceres和g2o库_ubuntu20.04安装g2o-CSDN博客
1.安装相应依赖:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
出错:
libsuitesparse-dev : 依赖: libcolamd2 (= 1:5.1.2-2) 但是 1:5.7.1+dfsg-2 正要被安装 依赖: libsuitesparseconfig5 (= 1:5.1.2-2) 但是 1:5.7.1+dfsg-2 正要被安装
解决方法:
参考关于ubuntu安装其他应用时出现的依赖问题解决方法_depends: mongodb-org-shell but it is not going to -CSDN博客
终端指令:
sudo apt-get updatesudo apt-get install aptitudesudo aptitude install libsuitesparse-dev # -> n 第一个选项选n;# -> y 后续选项选y即可;
原理相当于利用aptitude包管理,让你获得决定依赖库的版本是保留现在,还是退回到需要的老版本。
2.下载源码
GitHub - ceres-solver/ceres-solver: A large scale non-linear optimization library
3. 编译
进入ceres_solver文件夹下,建立文档build,并在build下打开终端。
输入指令:
cmake ..
出现问题:
解决问题:
问题出现原因就是没有安装absl库。absl安装参考https://blog.csdn.net/zhuiyunzhugang/article/details/113102169
但其中有一处不同。
下载资源:
git clone https://github.com/abseil/abseil-cpp.git
编译和安装:
cmake -DBUILD_SHARED_LIBS=ON -L CMakeLists.txt && makesudo make install
absl安装成功
出现新的问题:
大量需要被添加为可执行文件的命令报错。
解决办法:
原因这是没找到gmock的路径 在cmake时给定路径的参数可以解决
ls /usr/local/lib | grep libgtestls /usr/local/lib | grep libgmockls /usr/local/include | grep gtestls /usr/local/include | grep gmock
然后在cmake指定相应的路径
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DGTEST_LIBRARY=/usr/local/lib/libgtest.a -DGTEST_MAIN_LIBRARY=/usr/local/lib/libgtest_main.a -DGMOCK_LIBRARY=/usr/local/lib/libgmock.a -DGMOCK_MAIN_LIBRARY=/usr/local/lib/libgmock_main.a
参考文档:编译ceres-solver_ceres 编译 the version of abseil installed on the sy-CSDN博客
继续编译:
make -j4
出现问题:
4. 真TM的嘲讽
上述问题可能是因为CUDA不可用产生错误,暂时没有解决方法。目前解决方法是换个Ceres的版本安装。不用github直接用官网下载:
http://ceres-solver.org/ceres-solver-2.0.0.tar.gz
#1. 下载ceres2.0版本# 地址为 http://ceres-solver.org/ceres-solver-2.0.0.tar.gz#2. 解压#3. 进入目录,然后编译cd ceres-solvermkdir build && cd build cmake ..make -j3sudo make install
然后就成功了。参考:cuda导致ceres编译报错_ceres cuda-CSDN博客
5. 结语
ceres真难安装。