First install the protobuf compiler or update by following the instructions in Installing Protocol Buffer Compiler below.
Use the following command to compile a protocol buffer.
protoc -I. -I../vendor --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto- This command must be run from the directory containing the
.protofile being compiled. - The
-Iflag specifies where to find imports used by the.protofile and may need to be modified or removed to suit the .proto file being compiled.\- 💡 Note: Note: If you are importing a file from the vendor directory,
ensure that you have the correct version by running
go mod vendor.
- 💡 Note: Note: If you are importing a file from the vendor directory,
ensure that you have the correct version by running
- If there is more than one proto file in the directory, replace
*.protowith the file’s name. - If the
.protofile does not use gRPC, then the--go-grpc_outand--go-grpc_optcan be excluded.
This guide describes how to install the required dependencies to compile
.proto files to Go.
Before following the instructions below, be sure to remove all old versions of
protoc. If your previous protoc-gen-go file is not installed in your Go bin
directory, it will also need to be removed.
If you have followed this guide previously when installing protoc and need to
update, you can simply follow the instructions below. No uninstallation or
removal is necessary.
To compile a protocol buffer, you need the protocol buffer compiler protoc
along with two plugins protoc-gen-go and protoc-gen-go-grpc. Make sure you
use the correct versions as listed below.
| Version | Download | Documentation | |
|---|---|---|---|
protoc |
3.21.9 | https://github.com/protocolbuffers/protobuf/releases/tag/v3.21.9 | https://developers.google.com/protocol-buffers/docs/gotutorial |
protoc-gen-go |
1.28.1 | https://github.com/protocolbuffers/protobuf-go/releases/tag/v1.28.1 | https://pkg.go.dev/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go |
protoc-gen-go-grpc |
1.2.0 | https://github.com/grpc/grpc-go/releases/tag/v1.2.0 | https://pkg.go.dev/google.golang.org/grpc/cmd/protoc-gen-go-grpc |
-
Download the correct release of
protocfrom the release page or use the link from the table above to get the download for your OS.wget https://github.com/protocolbuffers/protobuf/releases/download/v3.21.9/protoc-3.21.9-linux-x86_64.zip -
Extract the files to a folder, such as
$HOME/.local.unzip protoc-3.21.9-linux-x86_64.zip -d $HOME/.local -
Add the selected directory to your environment’s
PATHvariable, make sure to include it in your.profileor.bashrcfile. Also, include your go bin directory ($GOPATH/binor$GOBIN) if it is not already included.export PATH="$PATH:$HOME/.local/bin:$GOPATH/bin"💡 Note: Make sure you update your configuration file once done with source
.profile. -
Now check that
protocis installed with the correct version by running the following command.protoc --versionWhich prints the current version
libprotoc 3.21.9 -
Next, download
protoc-gen-goandprotoc-gen-go-grpcusing the version found in the table above.go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 -
Check that
protoc-gen-gois installed with the correct version.protoc-gen-go --version protoc-gen-go v1.28.1 -
Check that
protoc-gen-go-grpcis installed with the correct version.protoc-gen-go-grpc --version protoc-gen-go-grpc 1.2.0