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:

  1. go get -u google.golang.org/grpc
  2. 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}
  1. Run vim ~/.bash_profile
  2. Add:
    export GO_PATH=~/go
    export PATH=$PATH:/$GO_PATH/bin
    
  3. Run source ~/.bash_profile

Reference: Unable to build protobuf to go endpoint