本篇文章主要解决mac下安装ProtoBuffer,编译go版本gRPC用的.proto文件
安装 protoc
注意,gRPC 需要用到 proto3, 而目前 Release 的版本是 2.6.1, 所以我们需要去下载源码并编译。
https://developers.google.com/protocol-buffers/docs/downloads?hl=zh-cn
protobuf 的源码在: https://github.com/google/protobuf
Mac的特有前置安装需求
对Mac 用户来说, Unix tools 默认是不可用的, 需要首先安装 Xcode , 然后在 terminal 运行下面命令:
$ sudo xcode-select –install
Mac下面除了用dmg、pkg来安装软件外,比较方便的还有用MacPorts\brew , 它们能帮助你安装其他应用程序,
port 的下载地址: https://www.macports.org/install.php
port 安装 autoconf automake libtool 的命令为:
$ sudo /opt/local/bin/port install autoconf automake libtool
brew 的命令为: brew install autoconf automake libtool
否则我们就需要象下面这样,一个个的编译安装。
http://www.cainiaoer.com/2014/10/560.html
下面是我 brew 安装的截屏:
Unix 下 Protocol Buffers 的编译
由于我们的代码是 github 下载的, 所以我们需要先产生 配置脚本
$ ./autogen.sh
这个命令将下载gtest 源码到当前目录, 并运行 automake, autoconf 等产生配置脚本和各种模板的 makefile。
如果你使用的是 release 包, 可以跳过这一步。 下载这里,如果你无法通过命令行下载,可以手工下载后,copy到对应目录, 不过要在这个sh文件中注释掉下载那一行。
编译安装
依次执行下面命令,完成编译、安装。
$ ./configure
$ make
$ make check
$ make install
安装完成后,需要确认安装的版本是 3。:
整个编译安装过程请参考:
https://github.com/google/protobuf
https://github.com/google/protobuf/blob/master/INSTALL.txt
安装 proto的 Go插件
go get -a github.com/golang/protobuf/protoc-gen-go
-a 参数标示下载好后直接做 go install
编译 .proto 文件
我们这里准备编译的 proto 文件如下,这个文件名 lm.helloworld.proto , 比较好的习惯就是这样命名: packageName.MessageName.proto:
syntax = "proto3";
package lm;
message helloworld
{
int32 id = 1; // ID
string str = 2; // str
int32 opt = 3;
}
在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义。
在这个例子中,package 名字叫做 lm,定义了一个消息 helloworld,该消息有三个成员,类型为 int32 的 id 和 opt,另一个为类型为 string 的成员 str。
注意,我们这里标示了 syntax = "proto3";
前面的 proto 相关工具准备好后, 我们执行下面命令即可产生这个idl文件对应的 go实现类。
假设你是在下面选中的目录下执行命令,期望生产的go版本的proto文件在 lm 目录下。
则执行下面命令。
protoc -I ../protos ../protos/lm.helloworld.proto --go_out=plugins=grpc:lm
跟 proto文件产生在同一个目录,则命令是:
protoc -I ../protos ../protos/lm.helloworld.proto --go_out=plugins=grpc:.
生产的Go代码文件:
proto 3 的语言向导请参看: https://developers.google.com/protocol-buffers/docs/proto3?hl=zh-cn
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2014-06-09 Dubbo简介
2014-06-09 Coherence 简介