grpc make找不到protoc 3

时间:2015-03-10 21:46:44

标签: macos grpc

我根据Mac上的instructions安装了grpc-java(运行Mavericks)。这包括安装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(大约第895行)删除PROTOBUF_CHECK_CMD和PROTOC_CHECK_CMD测试,但安装仍然失败并出现相同的错误。

当我在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,或者至少绕过那个测试?

2 个答案:

答案 0 :(得分:1)

您看到的关于protoc的消息并不表示make失败。这只是一个警告。您成功安装了gRPC并成功构建了hello world示例。

由于目前正在this GitHub issue调查的gRPC中的错误,该示例无法在Mac上运行。

答案 1 :(得分:0)

问题在于sudo make install/usr/local/bin下安装了protoc,但grpc位于/usr/bin下。 尝试使用以下命令配置protobuf:

./configure --prefix=/usr

这将在一个grpc期待的地方安装protoc二进制文件。当你在grpc上sudo make install时,sudo会正确找到protoc。 您可以使用以下命令验证sudo是否看到它:

sudo which protoc
sudo sh -c 'echo $PATH'

请注意,sudo echo $PATH并未告诉您sudo的路径在哪里。