编译gRPC Go版本使用的 ProtoBuffer 文件
本篇文章主要解决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
编译gRPC Go版本使用的 ProtoBuffer 文件的更多相关文章
- windows下编译Android版本的boost库文件
1.起因: 手上有一个用到了boost的asio库和thread库的工程要编译到手机上(Android版本和ios版本),本文只介绍如何编译到Android版本,ios版本之后再介绍,也许就不介绍了( ...
- 编译gRPC
编译gRPC 目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 无论通过哪种语言调用gRPC,都必须要编译gRPC,因为生成proto访问类时,除了产生标准的数据定义 ...
- 初识google多语言通信框架gRPC系列(二)编译gRPC
目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 无论通过哪种语言调用gRPC,都必须要编译gRPC,因为生成proto访问类时,除了产生标准的数据定义类之外,还需要 ...
- VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4
对于一些已经解决的问题,本博客不再讨论.只将本人遇到的问题做简单的说明. 一.VS 2013编译64位版本QT 4.8.6 QT项目官网中,对于QT4,其只提供了windows X86的版本,并且支持 ...
- 让QT编译快一点(增加基础头文件)
姚冬,中老年程序员 进藤光.杨个毛.欧阳修 等人赞同 我是来反对楼上某些答案的.我曾经用MFC写了金山词霸(大约20多万行),又用Qt写了YY语音(大约100多万行),算是对两种框架都比较有经验.纠正 ...
- [转载]Linux 环境下编译 0.11版本内核 kernel
最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...
- Windows7 WIN 7 64位 环境编译6sv2.1版本的大气传输模型
从来没见过Fortran...这次为了添加国产卫星光谱响应的支持,只能从零开始肯了. 6S模型主页:http://6s.ltdri.org/index.html. 下载最新的2015年更新的6SV2. ...
- 在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面)
在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面) (https://www.lfd.uci.edu/~gohlke/pythonlibs/) win10 ...
- libcurl开源库在Win7 + VS2012环境下编译、配置详解 以及下载文件并显示下载进度 demo(转载)
转载:http://blog.csdn.net/fengshuiyue/article/details/39530093(基本教程) 转载:https://my.oschina.net/u/14207 ...
随机推荐
- gdb的调试常用命令
一.gdb常用的命令 list l 常看源代码 break b 设置断点 b 10(行号) b ...
- BZOJ 5395--[Ynoi2016]谁的梦(STL&容斥)
5395: [Ynoi2016]谁的梦 Time Limit: 80 Sec Memory Limit: 128 MBSubmit: 22 Solved: 7[Submit][Status][Di ...
- Golang channel 的基本使用方法
package main import ( "fmt" "learner/Add" "time" ) //a. 普通类型,普通变量保存的就是 ...
- php批量导出pdf文件的脚本(html-PDf)
背景:突然有大量的文件需要导出成PDF文件,写一个批量导出pdf的脚本,同时文件的命名也需要有一定的规则 导出方式:向服务器中上传csv文件,csv文件中包含文件的地址和相对应的文件命名. 如下格式: ...
- html基础+常用标签
概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...
- XorPay.com 支付平台介绍【免费申请个人微信支付接口】
XorPay 支付平台介绍 XorPay 定位为个人 / 独立开发者 / 个体户 / 小微企业提供安全.简单.稳定.正规的收款服务.目前支持微信 NATIVE / JSAPI / 收银台 / 小程序 ...
- 散列表碰撞处理、开链法、HashTable散列
散列表碰撞处理.开链法.HashTable散列 /** * 散列表碰撞处理.开链法.HashTable散列. * 将数组里的元素位置,也设置为数组,当两个数据的散列在同一个位置时, * 就可以放在这个 ...
- Spring Security构建Rest服务-1200-SpringSecurity OAuth开发APP认证框架
基于服务器Session的认证方式: 前边说的用户名密码登录.短信登录.第三方登录,都是普通的登录,是基于服务器Session保存用户信息的登录方式.登录信息都是存在服务器的session(服务器的一 ...
- Android开发之漫漫长途 Ⅲ——Activity的显示之Window和View(2)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- 解决linux安装软件依赖的曲线救国方案
相信大家在一台无法连接外网的linux上安装软件时,对于软件依赖的安装,都会特别头疼,因为软件依赖的安装,不论是其数量,还是安装的复杂度都比软件本身要高出一个维度! 今天就和大家分享一个,解决linu ...