1

protobuf コンパイラ バージョン 3.0 があり、grpc と grpc python プラグインをインストールする必要があります。チュートリアルに続いてdeb http://http.debian.net/debian jessie-backports main、sources.list ファイルに追加して実行したsudo apt-get update結果sudo apt-get install libgrpc-devが返されました

Package libgrpc-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libgrpc-dev' has no installation candidate

そのため、INSTALL ノートに記載されているようにソースからコンパイルすることにし、次のようにしました。

 $ git clone https://github.com/grpc/grpc.git
 $ cd grpc
 $ git submodule update --init
 $ make 
 $ [sudo] make install

ただし、メイクステップでは、

[MAKE]    Generating cache.mk
make: Circular /home/vagrant/grpc2/grpc/libs/opt/libboringssl.a <- /home/vagrant/grpc2/grpc/libs/opt/libboringssl.a dependency dropped.
[C]       Compiling third_party/boringssl/crypto/bio/connect.c
third_party/boringssl/crypto/bio/connect.c: In function 'split_host_and_port':
third_party/boringssl/crypto/bio/connect.c:127:17: error: declaration of 'close' shadows a global declaration [-Werror=shadow]
cc1: all warnings being treated as errors
make: *** [/home/vagrant/grpc2/grpc/objs/opt/third_party/boringssl/crypto/bio/connect.o] Error 1

release-0_11 ブランチに切り替えると、make を実行すると、

[HOSTCXX] Compiling src/compiler/csharp_generator.cc
src/compiler/csharp_generator.cc:47:43: error: 'google::protobuf::compiler::csharp::GetUmbrellaClassName' has not been declared
src/compiler/csharp_generator.cc: In function 'void grpc_csharp_generator::{anonymous}::GenerateServiceDescriptorProperty(grpc::protobuf::io::Printer*, const ServiceDescriptor*)':
src/compiler/csharp_generator.cc:237:62: error: 'GetUmbrellaClassName' was not declared in this scope
make: *** [/home/vagrant/grpc2/grpc/objs/opt/src/compiler/csharp_generator.o] Error 1

これをインストールする方法がわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

2

私にとって、ファイルを次のように変更した後、問題は修正されました。

diff --git a/src/compiler/csharp_generator.cc 

b/src/compiler/csharp_generator.cc
index 7b497df..5a8746d 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -44,7 +44,7 @@

 using google::protobuf::compiler::csharp::GetFileNamespace;
 using google::protobuf::compiler::csharp::GetClassName;
-using google::protobuf::compiler::csharp::GetUmbrellaClassName;
+using google::protobuf::compiler::csharp::GetReflectionClassName;
 using grpc::protobuf::FileDescriptor;
 using grpc::protobuf::Descriptor;
 using grpc::protobuf::ServiceDescriptor;
@@ -234,7 +234,7 @@ void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *se
   out->Print("public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor\n");
   out->Print("{\n");
   out->Print("  get { return $umbrella$.Descriptor.Services[$index$]; }\n",
-             "umbrella", GetUmbrellaClassName(service->file()), "index",
+             "umbrella", GetReflectionClassName(service->file()), "index",
              index.str());
   out->Print("}\n");
   out->Print("\n");

具体的には、ファイルを開き、 GetUmbrellaClassNamesrc/compiler/csharp_generator.ccのすべての参照を GetReflectionClassName に置き換えてください

于 2016-01-16T02:45:39.517 に答える
1

逆方向の作業:

release-0_11 の場合: 最新の protobuf に対してコンパイルしようとしているようです。私たちは両方とも現在開発中であるため、時折壊れることがありますが、grpc は third_party/protobuf でテストされた protobuf のバージョンを追跡します。そのバージョンをチェックアウトしてインストールしてみてください。https://github.com/grpc/grpc/issues/4697を提出して、最新の protobuf 3.0 バージョンに更新しました。

github の master の場合: どのコンパイラと OS を使用していますか? 最近、boringssl の統合作業をチェックインしたので、これは新鮮であり、実戦でテストされたほどではありません。実戦で試してみたい。つまり、「make EMBED_OPENSSL=false」を実行すると、うまくいくはずです。

debian パッケージの問題: 何が起こっているのかわかりません。どの OS か教えていただければ、お使いの OS で VM をスピンアップして再現させていただきます。

于 2016-01-13T00:30:17.057 に答える