2013-07-08 20 views
6

Ho cercato di installare Mosh (il guscio mobile) sul seguente sistema:protocollo buffer errore versione quando si cerca di fare Mosh codice sorgente

[[email protected] mosh-1.2.4]$ cat /etc/*-release 
CentOS release 5.3 (Final) 

Si configura va bene, ma quando cerco di fare Mosh 1.2.4 (o 1.2.0) ottengo il seguente errore:

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 

Questo era con buffer protocollo versione 2.4.1 (suggerito che potrebbe essere insita nel mosh qui #import <string> in ios? Protobuf c++ in ios), ma ho provato ad utilizzare i buffer di protocollo versione 2.3.0 e 2.5.0 e danno tutti il ​​seguente errore:

"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." 

qualche idea?

risposta

0

Se si guarda alla userinput.pb.h, si noterà si legge

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

Così protobuf-2.4.1 è sufficiente per mosh-1.2.4. Se si verifica ancora l'errore, potrebbe esserci un'installazione protobuf vagante, probabilmente qualcosa in /usr/local.

+0

userinput.pb.h non viene fornito con Mosh. Viene generato in fase di compilazione dal programma protoc. Devi assicurarti che la versione di protoc corrisponda alla versione delle intestazioni protobuf. –

+0

Il mio sistema che esegue protoc version3.0.0 ma lib sto usando build per android [V2.6.1] (https://github.com/julienr/protobuf-android) ..n questo è dove sono rimasto bloccato ... Qualche suggerimento! – CoDe

4

Due anni dopo la domanda, non riuscivo ancora a trovare una buona soluzione. Ho avuto lo stesso problema e alla fine l'ho risolto dopo un po 'di lavoro investigativo. Il problema era questo: ho avuto l'ultima versione di protobuf dal repository git, https://github.com/google/protobuf. Quando ho cercato di costruire il mio progetto, si stava gettando l'errore indicato nella risposta di qmp,

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

stavo costruendo codice che qualcun altro ha scritto, e nel loro file di Proto, che non ha specificato una versione. L'impostazione predefinita è syntax = "proto2"; Ho aggiunto syntax = "proto3"; al file .proto appena prima della dichiarazione package e rimosso tutte le istanze delle parole chiave optional e required, in quanto non fanno parte della sintassi della versione 3. Poi dalla riga di comando, ho rigenerato l'output di protobuf.

[email protected]$ protoc --cpp_out=. project.proto 

Questo ha aggiornato tutti i file generati da protoc alla versione 3, che ha risolto il problema.

Problemi correlati