protoc-gen-go: program not found or is not executable
I am trying to build a sample application with Go gRPC, but I am unable to generate the code using "protoc"
I have installed the required libraries and Go packages using:
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go
I have tried setting the path as well, but no luck.
Sample "proto" file:
syntax = "proto3";
package greet;
option go_package="greetpb";
service GreetService{}
Error message:
"protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1."
Solution 1:
There are two ways to install the protobuf compiler. If you're on Ubuntu you can use this:
sudo apt install protobuf-compiler
Then of course there's the standard way:
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
Here forward it's just adding the path. Assuming when you installed Go you did this,
echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc
Now you can just extend this:
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc
Strangely protoc
can't expand ~
.
Solution 2:
I resolved it by following these steps:
Install the Go library using:
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
- Run
vim ~/.bash_profile
- Add:
export GO_PATH=~/go export PATH=$PATH:/$GO_PATH/bin
- Run
source ~/.bash_profile
Reference: Unable to build protobuf to go endpoint