作者:小时候V有时候 | 来源:互联网 | 2023-05-25 14:24
使用protobuf版本2.6.1(我通过自制软件安装)
我想跑
$ protoc --go_out=../cloud/ *.proto
我一直收到这个错误.
$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.
我在我的去路上安装了protoc-gen-go.其他人有这个问题吗?
1> Kenton Varda..:
protoc-gen-go
需要位于shell路径中,即PATH
环境变量中列出的目录之一,它与Go路径不同.您可以通过protoc-gen-go
在命令行输入来测试这个:如果它显示"未找到命令"(或类似),那么它不在你的PATH
.
仅供参考,它应该住在`$ GOPATH/bin`.这样做:`export PATH = $ PATH:$ GOPATH/bin`
我在路径和可执行文件中有它,但仍然报告`插件失败,状态代码为1.`
@JiangYD,我遇到了同样的问题.看起来protoc无法扩展像〜/ go/bin这样的路径.确保使用PATH设置中的完整目录,如/ home/johndoe/go/bin而不是〜/ go/bin.
2> 小智..:
运用
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
比使用更安全
$ sudo apt-get install golang-goprotobuf-dev
因为最新的protoc-gen-go
是使用lib github.com/golang/protobuf/proto
,但是protoc-gen-go
在apt-get
使用code.google.com/p/goprotobuf/proto
现在不存在的lib .
3> Quy Tang..:
您应该正确定义您GO_PATH
的go软件包所在的位置。换句话说,GO_PATH
就是您的go工作区。本GO_PATH
应该是~/go
。
protoc-gen-go
应该在你的PATH
。当您安装它后protoc-gen-go
住$GO_PATH/bin
。
将以下2条重要行添加到您的~/.bash_profile
:
export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin
然后,您需要启动一个新的shell会话,或者只需在此行中键入:
$ source ~/.bash_profile
4> 00imvj00..:
在Ubuntu 18.04上,经过验证可以解决此问题:
sudo apt-get install golang-goprotobuf-dev