简介
最近会使用到ECTO这个库,于是安装一下,安装过程中发现ECTO只支持到Kinetic版本,所以用Melodic的我就得自己来编译,整个编译安装过程如下所示。
安装环境:
ROS Melodic
Ubuntu 18.04
Step 1: 把Ecto git clone 到你ROS的工作空间内
$ cd your_path/src
$ git clone http://github.com/plasmodic/ecto.git
Step 2: 安装相关依赖
$ sudo apt-get install libboost-python-dev libboost-filesystem-dev libboost-system-dev \
libboost-thread-dev python-setuptools python-gobject python-gtk2 graphviz doxygen \
python-sphinx
Step3:编译
$ catkin_make
PS:若想安装到/usr/local可使用下面命令安装:
catkin_make -DCMAKE_INSTALL_PREFIX=/usr/local
Step4: 你会遇到的问题
问题1:
": fatal error: boost/tr1/unordered_map.hpp: No such file or directory #include <boost/tr1/unordered_map.hpp>"
解决方案:
1,进入到ecto的目录下使用如下命令找到这两个文件
$ grep -r 'tr1'
./src/lib/util.cpp:#include <boost/tr1/unordered_map.hpp>
./src/lib/plasm/impl.hpp:#include <boost/tr1/unordered_map.hpp>
把tr1删除,同时把代码里的std::tr1::unordered_map字段改成boost::unordered_map即可
问题2:有的人电脑没有安装boost可以手动安装,没有安装会报错,安装方法如下。
方法1:直接安装
$ sudo apt-get install libboost1.54-dev(安装)
$ sudo apt-get autoremove libboost1.54-dev(卸载)
方法2:手动安装最新版本
1,安装依赖库
$ sudo apt-get install mpi-default-dev
$ sudo apt-get install libbz2-dev
$ sudo apt-get install libicu-dev
2下载并解压,下载地址
比如我这里用的是1.70
$ tar -jxvf boost_1_70_0.tar.bz2
安装
$ ./bootstrap.sh
$ sudo ./b2
$ sudo ./b2 install
查看版本可用
dpkg -S /usr/include/boost/version.hpp
问题3:你可能遇到一个奇葩的问题,正则不能使用,这个问题是由于多个boost库引起的,需要删除不需要的库。比如这里如果你安装了1.70那么你应该去删除老版本boost
boost::re_detail_106600::perl_matcher<__gnu_cxx
解决方法:
1,把目前的新版本boost删除也就是刚刚装的1.70
2,把系统一开始使用pat-get install 安装的boost删除,再次编译即可。这里你会遇到很多ros-melodic相关的包都依赖于系统默认的boost,所以删除需谨慎。
[1]https://plasmodic.github.io/ecto/ecto/install/get_ecto.html
[2]http://github.com/plasmodic/ecto.git