为了账号安全,请及时绑定邮箱和手机立即绑定

错误“protoc-gen-go:程序未找到或不可执行”

错误“protoc-gen-go:程序未找到或不可执行”

Go
芜湖不芜 2023-07-17 15:23:16
我正在尝试使用 Go gRPC构建示例应用程序,但无法使用“protoc”生成代码我已经使用以下命令安装了所需的库和 Go 软件包:go get -u google.golang.org/grpcgo get -u github.com/golang/protobuf/protoc-gen-go我也尝试过设置路径,但没有运气。示例“原型”文件:syntax = "proto3";package greet;option go_package="greetpb";service GreetService{}错误信息:“protoc-gen-go:程序未找到或不可执行--go_out:protoc-gen-go:插件失败,状态代码为 1。”
查看完整描述

6 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

必须添加以下软件包:

sudo apt install protobuf-compiler

就我而言,我还必须添加这一点:

sudo apt install golang-goprotobuf-dev


查看完整回答
反对 回复 2023-07-17
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

我通过以下步骤解决了这个问题:

使用以下命令安装 Go 库:

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
  1. 跑步vim ~/.bash_profile

  2. 添加:

    export GO_PATH=~/goexport PATH=$PATH:/$GO_PATH/bin
  3. 跑步source ~/.bash_profile

查看完整回答
反对 回复 2023-07-17
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

去1.17+

来自https://go.dev/doc/go-get-install-deprecation

从 Go 1.17 开始,不推荐使用 go get 安装可执行文件。可以使用 go install 来代替。

~/.bashrc

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

安装

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

去:下载 google.golang.org/protobuf v1.27.1

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

去:下载 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0

去:下载 google.golang.org/grpc v1.44.0

文件.go

protoc --go-grpc_out=. *.proto

环境

  • 苹果M1 Pro

  • Go版本go1.17.8 darwin/arm64


查看完整回答
反对 回复 2023-07-17
?
MYYA

TA贡献1868条经验 获得超4个赞

有两种方法安装 protobuf 编译器。如果你使用的是 Ubuntu,你可以使用这个:

sudo apt install protobuf-compiler

当然还有标准的方法:

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

这里转发只是添加路径。假设当你安装 Go 时你这样做了,

echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc

现在你可以扩展它:

echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc

奇怪的protoc是无法扩展~


查看完整回答
反对 回复 2023-07-17
?
函数式编程

TA贡献1807条经验 获得超9个赞

从 GitHub 存储库来看,这个解决方案对我有用。

Go版本为go版本go1.14.1 Linux/amd64

将其添加到.bashrc并获取它。

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN


查看完整回答
反对 回复 2023-07-17
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

确保您的 GOBIN 已在PATH变量中设置。否则,您可能会遇到此问题。GOBIN通过运行检查路径go env并确认GOBIN不为空。


如果它是空的,那么尝试如下


export GOPATH=$HOME/go

export PATH=$PATH:$GOPATH/bin

protoc --go_out=plugins=grpc:. *.proto


查看完整回答
反对 回复 2023-07-17
  • 6 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信