当前位置: 首页 > 知识库问答 >
问题:

编译协议缓冲区时,缺少输入或程序不是可执行错误

夏雅志
2023-03-14

我试图在mac上制作Go语言grpc服务器。我安装了Go语言, grpc,协议缓冲区,并按照此示例检查了该grpc服务器https://grpc.io/docs/quickstart/go/问题是当我尝试使用协议缓冲区编译. proto文件时,它说'缺少输入'或'程序不可执行'。

安装协议缓冲区和grpc

brew install grpc protobuf

安装基于golang的protoc插件

go get github.com/golang/protobuf/protoc-gen-go

原始路径

which protoc
/usr/local/bin/protoc

示例位置

/Users/usrname/go/src/google.golang.org/grpc/examples/helloworld

运行proto编译器

protoc -I=/Users/username/go/src/google.golang.org/grpc/examples/helloworld/helloworld/ --go_out=/Users/username/go/src/google.golang.org/grpc/examples/helloworld/helloworld/ /Users/username/go/src/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.proto

错误消息

protoc-gen-go: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go_out: protoc-gen-go: Plugin failed with status code 1.

共有1个答案

马航
2023-03-14

这是在Go语言/原型第795期中提到的

请参阅自述文件页面的安装部分:

从存储库中获取代码并安装proto包
最简单的方法是运行go-get-u github。com/golang/protobuf/protoc gen go

除非设置了$GOBIN,否则编译器插件protoc gen go将安装在$GOPATH/bin中。它必须在您的$PATH中,协议编译器protoc才能找到它。

因此,请仔细检查$GOPATH的值(默认情况下,~/go如果未设置)

如果$GOPATH/bin(或~/go/bin)在您的$PATH中?

OP camilla确认它不是:

$PATH还有:/Users/username/go/bin/protoc gen go

它应该有:/Users/username/go/bin

 类似资料:
  • 我目前在我的protoc.exe.旁边有一个名为addressbook.proto的文件,我在生成. h和. cc文件时遇到了困难 然而,我得到以下回应 关于我可能做错了什么有什么建议吗?

  • 我按照协议缓冲区的教程,我在编译时不断遇到不同的错误。我的addressbook.proto文件在中

  • 我试图安装Caffe库,但我有一个编译问题,由于一个错误的原型版本安装在我的系统。 我在论坛上遵循了许多提议的方法,我认为在这篇帖子中讨论了最类似的问题。 在caffe.pb.h中控件是: 但是在我的系统标头(/usr/include/google/cript buf/stubs/Common. h)中: 命令protoc--version从终端返回libprotoc 3.2.0。 所以我安装了3

  • 问题内容: 我grep其他主题,但他们没有帮助我=(。在我的工作服务器上,我没有sudo特权,因此我使用 ./configure –prefix = / home /用户名/本地 然后,我用“ person”示例创建源文件,并使用protoc成功地对其进行编译。 我没有pkg-info =(。我尝试用 g ++ -I / home /用户名/本地/ include -L / home /用户名/本

  • 我搜索其他主题,但它们对我没有帮助=(。在我的工作服务器上,我没有sudo特权,所以我安装PB时使用 ./配置--prefix=/home/用户名/本地 然后我用“人”例子创建源文件,并用协议成功编译。 我没有pkg信息=(。我尝试用 g-I/home/username/local/include-L/home/username/local/lib-lprotobuf-lpthread main。

  • 在阅读这个相当长的问题之前,我提出了一个bughttps://github.com/GoogleCloudPlatform/python-docs-samples/issues/1103. 原型包和名称解析的留档状态 您可以使用其他定义。通过导入原始文件。导入另一个。在proto的定义中,您可以在文件的顶部添加一条import语句。 我的依赖于annotations.proto将HTTP/JSON