Golang版protobuf编译

官方网址:

https://developers.google.com/protocol-buffers/ (需要FQ)

代码仓库:

https://github.com/google/protobuf  (C++)

https://github.com/golang/protobuf  (Golang)

https://developers.google.com/protocol-buffers/docs/gotutorial (英文版教程)

本文以下部分按照英文版教程操作(windows  OS):

  1. 下载编译器,下载页面 https://github.com/google/protobuf/releases

最新发布版为V3.2.0,Url:https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-win32.zip

2. 在cmd中运行如下命令,(前提:golang环境已经正确配置)

go get -u github.com/golang/protobuf/protoc-gen-go

下载完成在,在$GOPATH\src\github.com\golang\protobuf中可以查看源码

在$GOPATH\bin中可以找到生成的protoc-gen-go.exe,这是golang版的编译插件。

要保证$GOPATH\bin目录在环境变量$PATH中,这样protoc.exe就可以找到这个插件了。

通过以上两步,就完成了protobuf的golang编译环境准备。

下面将以源码包中的example代码为例进行编译。在https://github.com/google/protobuf/releases 页面下载V3.2.0版本的源码。

https://github.com/google/protobuf/archive/v3.2.0.zip

将压缩包解压到 D:\protobuf-3.2.0

D:\protobuf-3.2.0\examples 目录包含了golang示例代码。在该目录下创建名为tutorial的文件夹,将addressbook.proto移动到tutorial文件夹下,将前面下载的protoc.exe也拷贝到该目录下。

在命令行中,切换到D:\protobuf-3.2.0\examples\tutorial,执行命令

protoc --go_out=.\ addressbook.proto

生成 addressbook.pb.go 源文件,

修改 D:\protobuf-3.2.0\examples\add_person.go,将pb "github.com/google/protobuf/examples/tutorial"改为

pb "./tutorial"

命令行切换到D:\protobuf-3.2.0\examples目录执行,go build add_person.go

在该目录下生成了 add_person.exe

命令行执行 add_person.exe .\book.bin

按照提示,输入相关信息,录入完成后,数据被序列化到book.bin二进制文件中。

编译list_people.go,执行 list_people.exe .\book.bin命令可以查看反序列化之后的信息。

时间: 2024-08-24 04:07:16

Golang版protobuf编译的相关文章

python版protobuf 安装

1. 下载protobuf源代码(当前最新版本为:2.5.0) #cd /opt #wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz 2. 解压,编译,安装 #tar zxvf protobuf-2.5.0.tar.gz #cd protobuf-2.5.0 #./configure #make #make check #make install 3. 继续安装protobuf的python模块(如果不用python

《Let's Build A Simple Interpreter》之 Golang 版

一直以来对编译器/解释器等都较有兴趣.我非科班出身,当初还在大学时,只是马马虎虎看完了<编译原理>之类教材,上机非常少,对龙书之类圣经也只是浅尝辄止而已.工作至今,基本已将编译原理相关知识忘记得差不多了,可能也就还对譬如预处理词法分析语法分析 AST 生成等基础性的概念还有点印象罢. 约 1 年多前,我也有想法搞一套基于简化的 Pascal 语法的带类型的脚本语言"编译器"(PaxCompiler 之类可能太复杂了),并将此脚本语言编写的脚本与 Golang 交互起来.当然

Linux - Unix环境高级编程(第三版) 代码编译

Unix环境高级编程(第三版) 代码编译 本文地址:http://blog.csdn.net/caroline_wendy 时间:2014.10.2 1. 下载代码:http://www.apuebook.com/code3e.html 2. 安装依赖库:sudo apt-get install libbsd-dev  3. 进入下载目录make 4. 复制头文件和动态链接库 sudo cp ./include/apue.h /usr/include/ sudo cp ./lib/libapue

Qt5.9.0正式版动态编译 (VS2017) 支持WebEngine 、 ICU 、OpenSSL

尝鲜体验 Qt5.9.0 正式版 动态编译 (VS2017) 支持WebEngine . ICU . OpenSSL模块 此版本只有Release库:具有开发文档: QtLib_VC-x86-shared.7z:http://pan.baidu.com/s/1o8pzeZ4QtLib_VC-x64-shared.7z:http://pan.baidu.com/s/1miHT0kK Release与Debug:32位:http://pan.baidu.com/s/1bpxnem764位:http:

[Golang] kafka集群搭建和golang版生产者和消费者

一.kafka集群搭建 至于kafka是什么我都不多做介绍了,网上写的已经非常详尽了. 1. 下载zookeeper  https://zookeeper.apache.org/releases.html 2. 下载kafka http://kafka.apache.org/downloads 3. 启动zookeeper集群(我的示例是3台机器,后面的kafka也一样,这里就以1台代指3台,当然你也可以只开1台) 1)配置zookeeper. 修改复制一份 zookeeper-3.4.13/c

golang 使用 protobuf 的教程

1.下载protobuf的编译器protoc 地址: https://github.com/google/protobuf/releases window:    下载: protoc-3.3.0-win32.zip    解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量.    当然也可放在其他目录,需加入环境变量,能让系统找到protoc.exelinux:    下载:protoc-3.3.0-linux-x86_64.zip 或 p

raknet for unity3d手机版的编译方法

在很久以前本人就发现了RAKNET,对比了几款开源网络库,发现RAKNET是一个不错的选择.RAKNET更适用于做游戏开发,但在我的手机点对点视频聊天项目里还是用了RAKNET.使用RAKNET做为中介服务器,手机P2P成功后还是使用RAKNET通讯.效果不错,视频语音不会丢包,很清晰流畅.当然在网络条件不好的情况下,可以设置RAKNET允许丢包,仍然能有不错的效果. raknet的缺点是不支持组播,在视频更专业的librtp支持组播,但librtp的缺点也很明显,它不支持UDT,而且如果用RA

protobuf编译安装

为什么选择protobuf,而不选择thift和avro,原因大概几点吧,网上对比的文章很多,我主要关注以下几点 1.protobuf序列化性能最好,序列化后字节数最少. 2.protobuf是单纯的序列化框架,不自带通信层,因为通信层我要用mina或netty,之前用的比较多,比较熟悉. 3.avro序列化的时候,将数据和schema存储到一起了,我理解客户端也需要用avro才能读取,不满足我们的需求. 选定protobuf了,准备尝试一下,但protobuf官网下载,说啥也没下载下来,开了F

golang Linux下编译环境搭建

1.下载golang1.4和1.10源码(1.4以后的版本都用1.4go编译安装,所以先安装1.4) 2.解压后我的目录结构是: /opt/xxx/golang |-------gopath                                //开发工作目录 |   |------src //开发源码 |  |------pkg |   |------bin //开发源码go install 生的的可执行文件 '-------src //golang源码 |-------go-1-1