3

Mac(Mavericksを実行)の指示に従ってgrpc-javaをインストールしました。これには、私が行ったprotobuf v3.0.0-alpha-2のインストールが含まれていました。

$ which protoc
/usr/local/bin/protoc

$ /usr/local/bin/protoc --version
libprotoc 3.0.0

Java の例は問題なく動作します。ここで、C++ の例を試してみたいと思います。理想的には、C++ クライアントが Java サーバーと通信し、その逆も同様です。

grpc のクローンを作成し、インストールを試みました。sudo make installその後、make verify-install失敗し、protobuf 3 がインストールされていないことがわかります。

$ make verify-install
We couldn't find protoc 3.0.0+ installed on your system. While this
won't prevent grpc from working, you won't be able to compile
and run any meaningful code with it.


Please download and install protobuf 3.0.0+ from:

   https://github.com/google/protobuf/releases

Once you've done so, or if you think this message is in error,
you can re-run this check by doing:

   make verify-install

grpc/Makefile の 259 行目に、次のテストが表示されます。

PROTOC_CHECK_CMD = protoc --version | grep -q libprotoc.3

私のMacで実行するprotoc --versionと、何か違うことがわかります(上記を参照)ので、上記の行を次のように変更してみました

PROTOC_CHECK_CMD = protoc --version | grep -q 'libprotoc 3.0.0'

ただし、から同じエラーが発生しmake verify-installます。

また、run_dep_checks で PROTOBUF_CHECK_CMD および PROTOC_CHECK_CMD テストを削除しようとしましたが (行番号 895 について)、インストールは同じエラーで失敗します。

grpc-common/cpp/helloworld で make を実行するとビルドされますが、greeter_client とgreeter_server の両方が失敗します。

$ ./greeter_server
E0310 17:38:23.349841000 140735186797328 server.c:617] assertion failed: grpc_is_initialized() && "call grpc_init()"
Abort trap: 6

grpcのインストールに問題があるためだと思います。

したがって、protobuf 3 は明確にインストールされています。Makefileにそれを納得させるにはどうすればよいですか、または少なくともそのテストをバイパスするにはどうすればよいですか?

4

2 に答える 2

1

protoc について表示されているメッセージは、make失敗したことを示しているわけではありません。これは単なる警告です。gRPC を正常にインストールし、hello world の例を正常にビルドしました。

この GitHub の問題で現在調査中の gRPC のバグにより、この例は Mac では機能しません。

于 2015-03-11T21:29:40.863 に答える