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にそれを納得させるにはどうすればよいですか、または少なくともそのテストをバイパスするにはどうすればよいですか?