使用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。 其他人有这个问题吗?
答案 0 :(得分:43)
protoc-gen-go
需要位于 shell 路径中,即PATH
环境变量中列出的目录之一,与Go路径不同。您只需在命令行键入protoc-gen-go
即可对此进行测试:如果显示"命令未找到" (或类似的)然后它不在你的PATH
。
答案 1 :(得分:23)
使用
$ sudo apt-get install golang-goprotobuf-dev
比使用
更安全protoc-gen-go
因为最新的github.com/golang/protobuf/proto
正在使用lib protoc-gen-go
,而apt-get
使用现在不存在的lib code.google.com/p/goprotobuf/proto
{{1}}。
答案 2 :(得分:8)
您应该正确定义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
答案 3 :(得分:6)
在Ubuntu 18.04上,经过验证可以解决此问题:
sudo apt-get install golang-goprotobuf-dev
答案 4 :(得分:2)
我遇到了同样的问题。
$ protoc --go_out=plugins=grpc:pb/ *.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
的安装目录,它必须位于$PATH
。
export PATH=$PATH:/path/to/dir
您最好将其添加到.bash_profile
echo $"export PATH=\$PATH:$(/path/to/dir)" >> ~/.bash_profile
source ~/.bash_profile
然后一切都好。
答案 5 :(得分:2)
我如何解决:
$GOPATH/bin
添加到PATH
export PATH=$PATH:$GOPATH/bin
export GOPATH=$(go env GOPATH)
文件内export PATH=$PATH:$GOPATH/bin
行上方添加.bash_profile
。go get -u
以获取所需的软件包。protoc --go_out=../cloud/ *.proto
。答案 6 :(得分:1)
我要解决的问题是:
从go工作区的go bin文件夹中复制protoc-gen-go到/ usr / local / bin /
像以前一样运行命令“ protoc --go_out = .. / cloud / * .proto”
答案 7 :(得分:1)
直接来自grpc documentation:
协议编译器的 Go 插件:
使用以下命令为 Go 安装协议编译器插件:
$ g++ ./try2.cpp -std=c++17
$./a.out
sv:123456789-5c51509f-8c5c5dc2-b6557
xx.second:123456789-5c51509f-8c5c5dc2-b6557
yy.second:9-5c51509f-8c5c5dc2-b6557
更新您的 PATH 以便 protoc 编译器可以找到插件:
$ export GO111MODULE=on # Enable module mode
$ go get google.golang.org/protobuf/cmd/protoc-gen-go \
google.golang.org/grpc/cmd/protoc-gen-go-grpc
答案 8 :(得分:0)
Mby将为某人提供帮助。我正在使用Fedora 29。
当我安装Go时,我做了:
echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc
所以我设置了我的GOPATH。 接下来,我要做:
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc
而我的protoc
编译器则很吸引人。
答案 9 :(得分:0)
确保在proton-gen-go
变量中到PATH
的路径是绝对路径(即/Users/me/go/bin
而不是~/go/bin
。
显然,protoc
不知道如何扩展~
。
答案 10 :(得分:0)
我有Ubuntu 18.04.02 LTS,并使用
安装了protoc
sudo apt install protobuf-compiler
我的GOPATH和GOBIN设置正确,但是仍然
protoc --go_out=. <filename>
我正在
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.
看了一堆地方后,发现自己在做
go get -u github.com/golang/protobuf/protoc-gen-go
能够解决此问题。 希望这对外面的人有帮助。
答案 11 :(得分:0)
如果您使用的是Fedora,请确保已安装“ protoc-gen-go”软件包,并且二进制文件位于您的shel PATH中。
$ sudo dnf install protoc-gen-go -y