一、安装protoc
# 1,下载压缩包
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protobuf-cpp-3.15.6.tar.gz
# 2,解压
tar -xzvf protobuf-cpp-3.15.6.tar.gz
cd protobuf-cpp-3.15.6
# 3,设置编译目录
./configure --prefix=/usr/local/protobuf
# 4,编译检测
make check
# 5,编译
make
# 6,安装
make install
# 7,配置环境变量
vim ~/.bash_profile
export PROTOBUF=/usr/local/protobuf
export PATH=$PATH:$PROTOBUF/bin
source ~/.bash_profile
# 8,测试
protoc --version
二、安装go插件
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
# 编译器插件protoc-gen-go将安装在 $GOBIN 中,默认为$GOPATH/bin,它必须在您$PATH的协议编译器protoc中才能找到它。
三、获取示例代码
git clone -b v1.46.0 --depth 1 https://github.com/grpc/grpc-go
cd grpc-go/examples/route_guide
四、生成双端代码
# IMPORT_PATH 指定.proto解析import指令时在其中查找文件的目录。如果省略,则使用当前目录。--proto_path 多次传递该选项可以指定多个导入目录;他们将被按顺序搜索。
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative routeguide/route_guide.proto
-
客户端代码:
route_guide.pb.go,其中包含用于填充、序列化和检索请求和响应消息类型的所有协议缓冲区代码。
-
服务端代码:
route_guide_grpc.pb.go,其中包含客户端使用服务中定义的方法调用的接口类型,服务器要实现的接口类型,也可以使用RouteGuide服务中定义的方法。