我的电脑的系统Ubuntu18.04
写在开头:
一步步编译你的程序,缺少什么库就安装什么库,完了删除build和devel文件夹,重新catkin_make
1.g2o
安装旧版本的g2o(经过我的测试,这个版本不出错,但是这个版本在运行十四讲的代码时会报错,所以可以安装14讲的版本)
a.下载源码
十四讲的版本或者
https://codeload.github.com/RainerKuemmerle/g2o/zip/refs/tags/20200410_git
14讲第二版
安装依赖:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev
libgtest-dev
b.编译
$ cd g2o
$ mkdir build
$ cd build
$ sudo ldconfig
$ cmake . .
$ make -j4
//安装
$ sudo make install
注意:一定要在编译前进入build,进行sudo ldconfig
参考博客:
博客
在安装完之后还要进行配置,不然运行程序时会出现如下的错误
error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file
解决办法:
sudo gedit /etc/ld.so.conf
添加如下代码:
/usr/local/lib
在终端运行:
sudo ldconfig
卸载
sudo rm -r /usr/local/lib/libg2o* /usr/local/include/g2o /usr/local/bin/g2o*
后续1,最近又发现的问题:
我最近又编译第四章的代码,出现了如下的错误:
这里应该是g2o版本的原因,我之前装的是14讲里的,于是我又装成了这个版本:
最近的g2o版本
安装步骤还是没有变化。
后续2,最近又发现的问题:
在编译第十章的时候出现的问题:
我刚开始以为是g2o版本的问题,就又装了其他的版本的,最终发现在CMakeLists.txt中加入:
set(CMAKE_CXX_STANDARD 14)
2.安装更新版本的cmake(如果需要)
a.查看当前版本
cmake --version
b.卸载cmake
(安装ros时可跳过)
sudo apt remove cmake
注:再此步骤中,如果安装了ros系统,提示会卸载许多与ros相关的cmake文件,可能会导致ros无法使用,所以跳过此步。
c.下载更高版本cmake
可在cmake官网下载,
d.安装cmake
(1)将cmake-3.xx.x.tar.gz解压
(2)将原来版本的cmake执行文件删除
cd /usr/bin/
sudo rm cmake
(3)将cmake-3.16.8.tar.gz提取出来并安装
cd cmake-3.16.8
./configure
make
sudo make install
cmake --version
重装cmake之后遇到的问题:
问题:bash: /usr/bin/cmake: 没有那个文件或目录
因为直接使用cmake系统回到默认的/usr/bin中去寻找,但是src中安装的cmake是在/usr/local/bin中,所以当然不会找到。解决方法:
做一个链接即可:ln -s /usr/local/bin/cmake /usr/bin
然后使用/usr/local/bin/cmake进行编译。
参考博客:
1.博客1
2.博客2
3.ceres(1.14版本)
a.先删除之前的ceres-solver:
sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a
sudo rm -r /usr/local/share/Ceres
b.安装依赖
// 安装依赖
$ sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
在Ubuntu18.04上面安装libcxsparse3.1.2,在安装失败情况下,可以改成libcxsparse3
c.下载ceres-solver-1.14.0
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
d.解压
tar xvf ceres-solver-1.14.0.tar.gz
e.编译
cd ceres-solver-1.14.0
mkdir build
cd build
cmake . .
make -j4
make test
sudo make install
参考博客:
1.博客1
2.博客2
3.博客3
4.sophus
用14讲第二版中新版本
cd Sophus-
mkdir build
cd build
cmake . .
make
sudo make install
参考博客:
博客
注意:ubuntu20.04会遇到问题,解决办法如下:
cmakelist那加一句set(CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations ")
28句之后
参考博客
5.fmt(如果需要)
// 克隆源码
$ git clone https://github.com/fmtlib/fmt.git
// 编译及安装
$ mkdir build
$ cd build
$ cmake . .
$ make
$ sudo make install
6.Geographic
// 需要自己下载源码
下载地址: https://sourceforge.net/projects/geographiclib/
// 解压并进入文件夹
$ cd GeographicLib-1.51
// 编译及安装
$ mkdir build
$ cd build
$ cmake . .
$ make
$ sudo make install
7.gflags(如果需要)
Ubuntu20.04系统,安装ceres时候,已经安装gflags、glog,无需再次安装gflags库、glog库
// 克隆源码
$ git clone https://github.com/gflags/gflags
// 解压并进入文件夹
$ cd gflags
// 编译及安装
$ mkdir build
$ cd build
$ cmake . . //★★★如果下一个glog编译报错,讲cmake …更改成 cmake … -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC … ★★★
$ make
$ sudo make install
8.glog (如果需要)
// 克隆源码
$ git clone https://github.com/google/glog
// 安装以来
$ sudo apt-get install autoconf automake libtool
// 配置
$ ./autogen.sh
$ ./configure
// 编译及安装
$ mkdir build
$ cd build
$ cmake . .
$ make
$ sudo make install
9.gtsam
// 克隆源码&自行下载
$ https://github.com/borglab/gtsam/archive/4.0.2.zip
// 解压并进入文件夹
$ unzip gtsam-4.0.2.zip
$ cd gtsam-4.0.2
// 编译及安装
$ mkdir build
$ cd build
$ cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF …
$ sudo make install
注意:ubuntu20.04需要4.0.3以上版本,参考如下
4.0.3版本
https://github.com/borglab/gtsam/releases/
10.Protobuf
这个库我到目前为止还没装好,因为ros安装完之后会自动安装一个3.0.0版本的protobuf,但我自己删除了(结果gazebo不能用了),重新安装了3.14版本的,因为课程中说用的是3.14版本的,但我装完之后编译代码的时候会报错
我对比了ros自带的protobuf,结果发现文件里确实有FindProtobuf.cmake文件,但我当时已经删除了,我现在还不知道是什么原因。
最新的发现,用ros自带的protobuf好使,不需要重新下载,不要轻易卸载ros自带的库,不然会出现意想不到的错误。
目前我的/usr/local/include目录如下图所示:
库的版本:pip list
1.opencv 3.2.0(系统自带)
pkg-config opencv --modversion
2.ceres 1.14
sudo cat /usr/local/include/ceres/version.h
3.eigen 3.3.4(系统自带)
gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h或者
dpkg -s libeigen3-dev | grep Version
4.pangolin0.5