无法在 ubuntu 中为 golang 编译 proto 文件

Can not compile proto file in ubuntu for golang

我已经安装了这些软件包:

google.golang.org/grpc

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

并像这样导出路径:

export PATH=$PATH:/usr/local/go/bin

当我尝试使用 protoc 命令编译 proto 文件时,我看到命令未找到错误:

protoc --go_out=. helloworld/helloworld.proto 

zsh: command not found: protoc

我的项目路径是这样的:/home/my-username/go/src/github.com/my-username/helloworld

我的go版本:go1.12.5

我用 ubuntu 18.04

当我用二进制文件安装它时它可以工作,但编译的 go 文件不包含一些功能,如:RegisterGreeterServer 或 NewGreeterClient

zsh: command not found: protoc 表示您的机器上没有安装 protoc。为此,您需要从 Official Releases, as you are on an ubuntu machine, I suggest you download protoc-3.7.1-linux-x86_64.zip 下载二进制文件(这是撰写此答案时最新的 protoc,您应该检查 releases 并下载最新版本)

您可以通过浏览器或使用以下命令下载:

wget "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-x86_64.zip" -O protoc-3.7.1-linux-x86_64.zip

现在解压,你会得到两个文件夹,"bin"和"include"。

bin/protoc复制到/usr/local/bin/protoc并将include/google复制到/usr/local/include/google

这将在您的计算机上正确安装 protoc

要查看它是否安装正确,请尝试在您的终端上执行 protoc 命令。你应该得到如下内容

如果您仍然遇到任何问题,请告诉我。

希望对您有所帮助!

最后在Amit的帮助下,我安装了protoc。但是当我用这个命令编译原型文件时

protoc --go_out=. add/add.proto    

go 编译后的文件不包含一些功能,例如:RegisterGreeterServer 或 NewGreeterClient。

通过 this reply 我发现了问题并添加了 plugins=grpc,然后尝试了这个命令并且成功了:

protoc --go_out=plugins=grpc:. add/add.proto