Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos grpc制造罐';我找不到protoc 3_Macos_Grpc - Fatal编程技术网

Macos grpc制造罐';我找不到protoc 3

Macos grpc制造罐';我找不到protoc 3,macos,grpc,Macos,Grpc,我根据Mac上的安装程序安装了GRPCJava(运行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安装,随后,mak

我根据Mac上的安装程序安装了GRPCJava(运行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安装
,随后,
make verify安装
失败,告诉我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_客户端和greeter_服务器都会失败:

$ ./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相信这一点,或者至少绕过该测试?

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


该示例在Mac上不起作用,因为gRPC中的一个bug目前正在中调查。

问题是
sudo make install
/usr/local/bin
下安装了protoc,但
gRPC
/usr/bin
下查找。 尝试使用以下方法配置protobuf:

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

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

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

关于protoc丢失的消息不是构建失败,只是提供信息。注意,它说“这不会阻止grpc工作”。原来的
grep
命令应该可以工作
grep
使用正则表达式,因此
匹配任何字符,并且它进行子字符串匹配,因此它应该匹配版本字符串的
libprotoc 3
部分。无论如何,这不应该是问题所在。如果是,C++HeloRoWord示例中的MaMag文件就不会成功。是的,我今天早些时候用Nicolas Noble和C++交换了一些电子邮件。我看到有一个pull请求来修复Makefile问题。