我尝试在 Ubuntu 16.04.02 虚拟机中为 cpp 编译 grpc。由于 grpc 提供的 protobuf 版本无法编译(解压缩说其中一个 zip 文件已损坏),我自己从源代码编译了 protobuf 3.2.0(这应该是我理解的正确版本),效果很好。
当我现在运行 make 来编译 grpc 时,我得到一个冗长的错误,这与某些文件是使用较旧的 protoc 版本生成的事实有关。(我在底部添加了完整的错误消息)。所以我的问题是:3.2 是错误的 protobuf 版本还是不同的问题?我还尝试根据需要帮助在 ubuntu 16.04 上安装 c++ grpc 从grpc 的第三方目录中删除 protobuf 目录,但它没有改变任何内容。
提前致谢!
错误信息:
[CXX] Compiling src/cpp/ext/proto_server_reflection.cc
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h:51:2: error: #error This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
include/grpc++/ext/reflection.pb.h:52:2: error: #error incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
include/grpc++/ext/reflection.pb.h:53:2: error: #error regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
^
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServerReflectionRequest::host() const’:
include/grpc++/ext/reflection.pb.h:994:87: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
host_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServerReflectionRequest::file_by_filename() const’:
include/grpc++/ext/reflection.pb.h:1048:118: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
name_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServerReflectionRequest::file_containing_symbol() const’:
include/grpc++/ext/reflection.pb.h:1129:124: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
mbol_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServerReflectionRequest::all_extension_numbers_of_type() const’:
include/grpc++/ext/reflection.pb.h:1258:131: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
type_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServerReflectionRequest::list_services() const’:
include/grpc++/ext/reflection.pb.h:1339:115: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
ices_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ExtensionRequest::containing_type() const’:
include/grpc++/ext/reflection.pb.h:1423:98: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
type_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServerReflectionResponse::valid_host() const’:
include/grpc++/ext/reflection.pb.h:1485:93: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
host_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ExtensionNumberResponse::base_type_name() const’:
include/grpc++/ext/reflection.pb.h:1831:97: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
name_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ServiceResponse::name() const’:
include/grpc++/ext/reflection.pb.h:1943:87: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
name_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from include/grpc++/ext/reflection.grpc.pb.h:73:0,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
include/grpc++/ext/reflection.pb.h: In member function ‘const string& grpc::reflection::v1alpha::ErrorResponse::error_message() const’:
include/grpc++/ext/reflection.pb.h:2005:96: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
sage_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
^
In file included from include/grpc++/ext/reflection.pb.h:57:0,
from include/grpc++/ext/reflection.grpc.pb.h:73,
from ./src/cpp/ext/proto_server_reflection.h:39,
from src/cpp/ext/proto_server_reflection.cc:39:
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate: const string& google::protobuf::internal::ArenaStringPtr::GetNoArena() const
inline const ::std::string& GetNoArena() const { return *ptr_; }
^
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
Makefile:2094: recipe for target '/home/snoato/Downloads/grpc/objs/opt/src/cpp/ext/proto_server_reflection.o' failed
make: *** [/home/snoato/Downloads/grpc/objs/opt/src/cpp/ext/proto_server_reflection.o] Error 1