6

我一直在尝试在以下系统上安装 Mosh(移动外壳):

[ptedder@ukch-dev-lndt03 mosh-1.2.4]$ cat /etc/*-release
CentOS release 5.3 (Final)

它配置好,但是当我尝试制作 Mosh 1.2.4(或 1.2.0)时,我收到以下错误:

make  all-recursive
make[1]: Entering directory `/home/ptedder/bin/mosh-1.2.4'
Making all in src
make[2]: Entering directory `/home/ptedder/bin/mosh-1.2.4/src'
Making all in protobufs
make[3]: Entering directory `/home/ptedder/bin/mosh-1.2.4/src/protobufs'
make  all-am
make[4]: Entering directory `/home/ptedder/bin/mosh-1.2.4/src/protobufs'
  CXX    userinput.pb.o
In file included from userinput.pb.cc:5:
userinput.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
userinput.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
userinput.pb.h:14:2: error: #error your headers.
make[4]: *** [userinput.pb.o] Error 1
make[4]: Leaving directory `/home/ptedder/bin/mosh-1.2.4/src/protobufs'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/ptedder/bin/mosh-1.2.4/src/protobufs'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/ptedder/bin/mosh-1.2.4/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ptedder/bin/mosh-1.2.4'
make: *** [all] Error 2

这是使用协议缓冲区版本 2.4.1 (建议它可能在这里被硬编码到 mosh中 #import <string> in ios?Protobuf c++ in ios)但我也尝试过使用协议缓冲区版本 2.3.0 和 2.5.0 并且他们都给出以下错误:

"This file was generated by a newer version of protoc which is
userinput.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
userinput.pb.h:14:2: error: #error your headers."

有任何想法吗?

4

2 回答 2

6

在提出这个问题两年后,我仍然找不到一个好的解决方案。我遇到了同样的问题,经过一些侦探工作最终解决了它。问题是这样的:我从 git repo 获得了最新版本的 protobuf,https://github.com/google/protobuf。当我尝试构建我的项目时,它抛出了 qmp 的答案中显示的错误,

#if GOOGLE_PROTOBUF_VERSION < 2004000                                           
#error This file was generated by a newer version of protoc which is...  

我正在构建其他人编写的代码,并且在他们的 .proto 文件中,他们没有指定版本。默认是syntax = "proto2";syntax = "proto3";在声明之前添加到 .proto 文件中并删除了and关键字package的所有实例,因为它们不是版本 3 语法的一部分。然后从命令行,我重新生成了 protobuf 输出。optionalrequired

prompt@ubuntu$ protoc --cpp_out=. project.proto

这将 protoc 生成的所有文件更新到版本 3,从而解决了该问题。

于 2016-02-24T21:26:10.050 回答
0

如果您查看 userinput.pb.h,您会注意到它显示为

#if GOOGLE_PROTOBUF_VERSION < 2004000                                           
#error This file was generated by a newer version of protoc which is            

所以 protobuf-2.4.1 对于 mosh-1.2.4 来说已经足够了。如果您仍然收到错误,则可能是安装了杂散的 protobuf,可能是/usr/local.

于 2013-07-08T12:04:40.940 回答