2013-07-08 47 views
6

Tôi đã cố gắng để cài đặt Mosh (vỏ điện thoại di động) trên hệ thống sau:Nghị định thư đệm lỗi phiên bản khi cố gắng làm cho mã nguồn Mosh

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

Nó cấu hình ổn, tuy nhiên khi tôi cố gắng và làm Mosh 1.2.4 (hoặc 1.2.0) tôi nhận được lỗi sau:

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 

nầy cũng ở với Nghị định thư đệm phiên bản 2.4.1 (đề nghị nó có thể được mã hóa trong các Mosh đây #import <string> in ios? Protobuf c++ in ios) nhưng tôi đã cố gắng sử dụng bộ đệm Nghị định thư Phiên bản 2.3.0 và 2.5.0 là tốt và tất cả đều cung cấp cho các lỗi sau:

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

bất kỳ ý tưởng nào?

Trả lời

0

Nếu bạn nhìn vào userinput.pb.h, bạn sẽ thấy nó đọc

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

Vì vậy protobuf-2.4.1 là đủ cho mosh-1.2.4. Nếu bạn vẫn nhận được lỗi, thì có thể có một cài đặt protobuf đi lạc, có thể là một cái gì đó trong /usr/local.

+0

userinput.pb.h không được giao bằng Mosh. Nó được tạo ra tại thời gian xây dựng bởi chương trình protoc. Bạn cần đảm bảo rằng phiên bản của protoc khớp với phiên bản của các tiêu đề protobuf của bạn. –

+0

Hệ thống của tôi chạy phiên bản 3.0.0 nhưng phiên bản lib mà tôi đang sử dụng để xây dựng cho android [V2.6.1] (https://github.com/julienr/protobuf-android) ..n đây là nơi tôi bị kẹt ... Bất kì lời đề nghị nào! – CoDe

4

Hai năm sau khi câu hỏi này được hỏi, tôi vẫn không thể tìm được giải pháp tốt. Tôi đã có cùng một vấn đề, và cuối cùng đã sửa nó sau một số công việc thám tử. Vấn đề là: Tôi đã có phiên bản mới nhất của protobuf từ git repo, https://github.com/google/protobuf. Khi tôi cố gắng xây dựng dự án của tôi, nó đã được ném các lỗi xuất hiện trong câu trả lời của qmp,

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

tôi đã xây dựng mã mà người khác đã viết, và trong tập tin .proto của họ, họ không chỉ định một phiên bản. Mặc định là syntax = "proto2"; Tôi đã thêm syntax = "proto3"; vào tệp .proto ngay trước tuyên bố package và xóa tất cả các trường hợp của các từ khóa optionalrequired vì chúng không phải là một phần của cú pháp phiên bản 3. Sau đó, từ dòng lệnh, tôi đã tái tạo đầu ra protobuf.

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

Cập nhật tất cả các tệp được tạo bởi protoc thành phiên bản 3, giải quyết được vấn đề.