error This file was generated by an xxx version of protoc which is 解决方法

写在前面

题主的环境:
ubuntu 16.04,ros kinetic ,我当前的 protoc 版本为3.4.0,

一、报错信息

编译调用 protobuf 时出现报错

error:  #error This file was generated by an older version of protoc which is

根据报错提示,可以发现,当前的文件是用旧的 protobuf 版本产生的,也就是我们系统当前的版本太高了。

查看当前的 protobuf 版本

 protoc --version  

二、解决方法

具体操作为:

首先移除 原有的 protobuf :

cd /usr/local/include/google
sudo rm -rf protobuf

下载 protobuf-3.0.0 ;(我下载了protobuf-v3.10.0.zip ,按照所有步骤操作完成之后,如果还报版本不对的错误,说明这个v3.0.0 版本不对,需要根据下载更新的版本或者更旧的版本~~)

cd ~/Downloads/protobuf-3.0.0
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig

至此可以继续编译相应工作空间。

三、相关报错解决方法

  1. 报错#error This file was generated by a newer version of protoc which is
    如果报错:
#error This file was generated by a newer version of protoc which is

根据报错提示,可以发现,当前的文件是用新的 protobuf 版本产生的,也就是我们系统当前的版本太低了。所以需要重新下载更高的版本,执行上述步骤重新安装。

  1. 执行 ./autogen.sh时,如果报错 Failed to connect to googlemock.googlecode.com port 443: 连接超时
    (这部分参考 ./autogen.sh 中的内容就很好理解了)
:~/third_library/protobuf-3.0.0$ ./autogen.sh 
Google Mock not present.  Fetching gmock-1.7.0 from the web...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:02:09 --:--:--     0
  curl: (7) Failed to connect to googlemock.googlecode.com port 443: 连接超时

在这里插入图片描述

这说明,通过终端下载 gmock-1.7.0.zip 失败,解决方法是之间通过 github 下载gmock 这个文件 here ,然后放到 protobuf-3.10.0/ 文件夹下,并且 将文件夹 gmock-1.7.0/改名为 gmock/ ,然后再次执行 ./autogen.sh 指令。

参考链接:
[1] lc740390316. This file was generated by an older version of protoc 解决方法 [EB/OL]. https://blog.csdn.net/lc740390316/article/details/86493220, 2019-01-15/2022-03-24.

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值