2013-07-08 7 views
6

ich versucht habe Mosh (die Mobile Shell) auf folgendem System zu installieren:Protocol Buffers Fehler Version, wenn sie versuchen Mosh Quellcode zu machen

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

Es konfiguriert in Ordnung, aber wenn ich versuche, und machen Mosh 1.2.4 (oder 1.2.0) bekomme ich folgende Fehlermeldung:

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 

Dies war mit Protocol Buffers Version 2.4.1 (vorgeschlagen, es könnte in mosh hier #import <string> in ios? Protobuf c++ in ios fest einprogrammiert werden), aber ich habe versucht mit Protocol Buffers Version 2.3.0 und 2.5.0 auch und sie alle geben den folgenden Fehler:

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

irgendwelche ideen?

Antwort

0

Wenn Sie userinput.pb.h schauen, werden Sie feststellen, es liest

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

So protobuf-2.4.1 für Mosh-1.2.4 ausreichend ist. Wenn Sie immer noch den Fehler erhalten, kann es zu einer Installation von stroy-Protobuf kommen, wahrscheinlich etwas in /usr/local.

+0

userinput.pb.h wird nicht mit Mosh geliefert. Es wird zur Build-Zeit vom Protokoll-Programm generiert. Sie müssen sicherstellen, dass die Version von protoc mit der Version Ihrer protobuf-Header übereinstimmt. –

+0

Mein System läuft protok Version 3.0.0, aber ich benutze, um für Android [V2.6.1] zu bauen (https://github.com/julienr/protobuf-android) ..n hier bin ich stecken geblieben ... Irgendein Vorschlag! – CoDe

4

Zwei Jahre, nachdem diese Frage gestellt wurde, konnte ich immer noch keine gute Lösung finden. Ich hatte das gleiche Problem und habe es nach einer Detektivarbeit behoben. Das Problem war folgendes: Ich hatte die neueste Version von Protobuf aus dem Git Repo, https://github.com/google/protobuf. Als ich versuchte, mein Projekt zu bauen, es warf den Fehler in qmp Antwort gezeigt,

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

ich Code bauen, dass jemand anderes geschrieben hat, und in ihrer .proto Datei, haben sie eine Version nicht angeben. Der Standardwert ist syntax = "proto2"; Ich habe syntax = "proto3"; zu der .proto-Datei direkt vor der package Deklaration hinzugefügt und alle Instanzen der optional und required Schlüsselwörter entfernt, da sie nicht Teil der Version 3-Syntax sind. Dann habe ich von der Befehlszeile aus die Protobuf-Ausgabe neu generiert.

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

Dies aktualisiert alle Dateien von Protoc auf Version 3, die das Problem gelöst.

Verwandte Themen