安装
protobuf
git clone https://github.com/google/protobuf.git cd protobuf git checkout v3.4.1 -b v3.4.1 ./autogen.sh ./configure make make install
安装
protobuf go 插件
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
在
~/.profile
中将protoc-gen-go
所在路径加到PATH
环境变量中PATH="`go env GOPATH`/bin:$PATH"
最新版本的
protoc-gen-go
默认生成的 protobuf 4.x 的代码,我们的项目目前还是使用 protobuf 3.x,这会导致生成的代码无法通过编译,错误信息xxx.pb.go:2799:21: c.cc.NewStream undefined (type *grpc.ClientConn has no field or method NewStream) xxx.pb.go:2831:13: c.cc.Invoke undefined (type *grpc.ClientConn has no field or method Invoke)
需要改回生成 protobuf 3.x 的代码,修改
github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go
const generatedCodeVersion = 4
改为
const generatedCodeVersion = 3
重新编译安装
protoc-gen-go
cd github.com/golang/protobuf make install
参考