首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grpc make找不到协议3

grpc make找不到协议3
EN

Stack Overflow用户
提问于 2015-03-11 05:46:44
回答 2查看 3.7K关注 0票数 3

我在Mac上根据instructions安装了grpc-java (运行Mavericks)。这包括安装protobuf v3.0.0-alpha-2,我这样做了:

代码语言:javascript
复制
$ 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都失败了,告诉我没有安装Protobuf3:

代码语言:javascript
复制
$ 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行,我看到了这个测试:

代码语言:javascript
复制
PROTOC_CHECK_CMD = protoc --version | grep -q libprotoc.3

如果我在我的苹果电脑上运行protoc --version,我会看到一些不同的东西(见上),所以我试着把上面的代码行改为

代码语言:javascript
复制
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都失败了:

代码语言:javascript
复制
$ ./greeter_server
E0310 17:38:23.349841000 140735186797328 server.c:617] assertion failed: grpc_is_initialized() && "call grpc_init()"
Abort trap: 6

我假设是因为安装grpc的问题。

所以,Protobuf3显然已经安装好了。我如何才能让Makefile相信这一点,或者至少绕过测试呢?

EN

回答 2

Stack Overflow用户

发布于 2015-03-12 05:29:41

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

这个例子在Mac上不起作用,因为this GitHub issue目前正在研究gRPC中的一个bug。

票数 1
EN

Stack Overflow用户

发布于 2015-04-16 10:15:16

问题是sudo make install/usr/local/bin下安装了协议,而grpc/usr/bin下查看。尝试使用以下命令配置协议:

代码语言:javascript
复制
./configure --prefix=/usr

这将把grpc二进制文件安装在grpc所期望的位置。当您在grpc上执行sudo make install时,sudo将正确地找到protoc。您可以使用以下命令验证sudo是否可以看到它:

代码语言:javascript
复制
sudo which protoc
sudo sh -c 'echo $PATH'

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28974708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档