ubuntu20+protoc+gazebo
- 问题描述
- 问题定位
- 解决方案
问题描述
今天在搞路径规划算法时,从git上拉下来一个算法,ros环境那些都有,但是在编译的时候出现了如下图所示的一下问题:(为了方便搜索关键词)
In file included from /usr/include/gazebo11/gazebo/msgs/MessageTypes.hh:91:0,
from /usr/include/gazebo11/gazebo/msgs/msgs.hh:24,
from /usr/include/gazebo11/gazebo/physics/Entity.hh:28,
from /usr/include/gazebo11/gazebo/physics/Model.hh:32,
from /home/thesis/gazebo_animate_pose/animate_pose.cc:4:
/usr/include/gazebo11/gazebo/msgs/wrench_stamped.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
/usr/include/gazebo11/gazebo/msgs/wrench_stamped.pb.h:18:2: error: #error incompatible with your Protocol Buffer headers. Please
/usr/include/gazebo11/gazebo/msgs/wrench_stamped.pb.h:19:2: error: #error regenerate this file with a newer version of protoc.
问题定位
通过错误描述,我就开始对我现有的版本就行确认,通过文件名称我确定gazebo版本是11:
通过下方命令进行确认:
dpkg -l | grep gazebo
protoc版本排查:(我的版本是3.21.4)
protoc --version
然后进入**/usr/include/gazebo-11/gazebo/msgs**路径下,全局搜索关键字GOOGLE_PROTOBUF_VERSION,随便进去一个文件就可以看到如下图内容:
我的protoc版本需求是** 3.6.1**,所以就是protoc降级问题。
解决方案
- 下载3.6.1版本的安装包:protobuf-all-3.6.1.tar.gz
- 解压并进入压缩包
./configure –prefix=/usr/local/
sudo make
sudo make check
sudo make install
protoc --version
查看最终的版本