参考链接:官方安装指导过程
Cartographer安装官网教程
cartographer超详尽安装教程!安装教程
安装教程https://zhuanlan.zhihu.com/p/100107552
在走到编译这步时,执行指令
catkin_make_isolated --install --use-ninja 后,界面ceres报错,错误信息如下
查找资料发现,该错误由于protobuf版本冲突导致
解决该问题,几个相关博客可看完再操作,解决cartographer安装后(环境是ros-kinetic ,gazebo7),工作空间编译时提示protoc版本冲突错误,
资料来源protoc版本冲突 卸载原来protoc:
1.看哪里有安装protoc:
whereis protoc
现在用的protoc是在哪里安装的:
which protoc
查看目前正在使用的protoc版本:
protoc --version
2、删除安装目录的安装包,例如下面的命令:
rm /usr/local/bin/protoc
参考文章:protobuf的安装和卸载
1.下载protobuf
下载地址:https://github.com/google/protobuf/releases
2.编译protobuf
解压下载的zip包,cd到protobuf的目录下,执行以下指令:
tar -xvf protobuf
cd protobuf
./configure --prefix=/usr
此处参考链接:Protocol Buffers - Google’s data interchange format
和Ubuntu16中卸载并重新安装google的Protocol Buffers
参考链接:
cartographer 最新版安装测试https://www.cnblogs.com/lvchaoshun/p/9824528.html
此处注意官网写了,默认会安装到/usr/local路径下,但是/usr/local/lib不一定是系统路径LD_LIBRARY_PATH的一部分,因而或者将/usr/local/lib增加到系统路径LD_LIBRARY_PATH,或者指定安装路径。最好的就是指定安装到/usr路径(此时由于拷贝lib文件夹,实际上安装到/usr/lib路径)
如下命令:
./configure --prefix=/usr
还有,如果以前有安装过的话,现在想安装到其他路径,使用make clean清理一下原来的版本。
make -j4
make check
sudo make install
sudo ldconfig # refresh shared library cache
执行sudo ldconfig报错 “ldconfig: Warning: ignoring configuration file that cannot be opened: /usr/local/etc/ld.so.conf: No such file or directory”, 参考链接Ubuntu——/etc/ld.so.conf
Ubuntu——/etc/ld.so.conf一文,直接在要求目录下创建该文件,执行指令
sudo gedit /usr/local/etc/ld.so.conf
保存后再执行指令 sudo ldconfig ,输出版本
该指令资料 “ldconfig命令和/etc/ld.so.conf文件详解” ldconfig命令和/etc/ld.so.conf文件详解
默认3.12会安装到/usr/local/bin目录下,然后通过软链接的方式将新生成的protoc链接到/usr/bin即可。 此处参考资料“Ubuntu14.04上编译指定版本的protobuf源码操作步骤”,Ubuntu14.04上编译指定版本的protobuf源码操作步骤
软链接指令:
sudo ln -s /usr/local/bin/protoc /usr/bin/protoc
3.检查安装是否成功
protoc –version
如果成功,则会输出版本号信息,例如:libprotoc 3.5.1
如果有问题,则会输出错误内容。
备注,资料来源:Linux ./configure --prefix 命令是什么意思?:
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。
其中–prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
如果配置–prefix,如:
./configure --prefix=/usr/local/test
可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。
用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。
当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。