本文链接:https://blog.csdn.net/leesongshared2014/article/details/102481415

Protocol Buffer 简介

Protocol Buffer 是 google 于 2008 推出的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 和 json 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。现今经过多个版本迭代已经到了 3.x 版本

  其实说白了 Protocol Buffer 就是一个协议,和解释器。可以用 proto 文件把 model 或者其他数据序列化 or 反序列化(把二进制数据解析为 Model 或者把 Model 转为二进制数据)。它添加了多语言的支持,在不同语言下,遵守同样的协议(使用同样的 proto),这样就可以保证在不同端,数据可以交互,而且不用担心数据的序列化问题。

安装Mac上的工具之类的都可以借助brew这是Mac下和Linux下apt get install一样强大的工具,用一用你就知道了!

1. 安装 brew

homebrew是mac下用来代替apt-get命令的,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。安装protobuf时缺少automake以及libtool,需要brew命令进行安装。

打开Mac终端执行下面命令。即可安装(也可自行百度Mac下如何安装brew)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

执行安装完成后可以执行以下命令查看安装是否成功

brew --version

接下来安装Protobuf Compiler,执行一下几个命令即可:

  Automake 是一种帮助『自动』产生 Makefile 文件的软件,并且让开发出来的的软件可以象 Apache,MySQL 和常见的 GNU 软件一样,程序设计者只需要写一些预先定义好的宏 (macro),提交给Automake处理后会产生一个可以供 Autoconf 使用的 Makefile.in文件。再配合利用 Autoconf产生的自动配置设置文件 configure 即可产生一份符合 GNU Makefile 惯例的 Makeifle 了.

  libtool是一种属于GNU建构系统的GNU程序设计工具,用来产生便携式的库;

brew install automake

brew install libtool

brew install protobuf

2. 安装完成后可以再自己电脑进入一个指定的目录中执行以下命令

git clone https://github.com/google/protobuf.git

拉取到本地成功后进入到 Protobuf 文件夹目录中执行

./autogen.sh

3. 安装 Protobuf,分别执行以下命令 <这是一个需要时间的过程,耐心等待一下直到安装完成>

./configure

make check

make

make install

所有操作完成后可以执行 protoc --version 命令检测是否真正安装成功,如下图:

4. 安装 Protobuf python
进入到 protobuf/python 文件夹目录中执行sudo python setup.py install,执行完后可以通过执行sudo python setup.py test检查是否有安装成功,如果最后提示

Ran 826 tests in 3.347s

OK (skipped=12)

5. 安装 Lua,可以进入 Lua 的官方网站下载最新 Lua 包

官方网址: http://www.lua.org/download.html 下载 Lua 压缩包,解压后进入 lua-5.3.5 文件夹目录分别执行以下 2 个命令

make macosx test
sudo make install

配置对应的环境变量<有的机器可以不配置>

export LUA_PATH=/Users/fanlinsong/lua-5.3.5/src

export PATH=$PATH:$LUA_PATH

也可直接使用brew命令安装lua:

brew install lua

有的机器也需要安装 pkg-config-0.28,有的不需要<我的就不需要安装虽然安装 protoc-gen-lua 时提示要我安装,但是我没有安装也直接把 protoc-gen-lua 搞定了>:安装步骤如下,终端操作

curl http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz -o pkg-config-0.28.tar.gz

tar -xf pkg-config-0.28.tar.gz

cd pkg-config-0.28

./configure --with-internal-glib

sudo make install

6. 安装protoc-gen-lua
可以直接去这个地址 https://github.com/sean-lin/protoc-gen-lua 下载到本地

也可以终端执行

git clone https://github.com/sean-lin/protoc-gen-lua.git

然后终端在该路径打开终端进入到该文件夹中,进入执行

cd protobuf && make

然后创建一个链接到 protoc-gen-lua ,

$cd /usr/local/bin && sudo ln -s 你存储 protoc-gen-lua 的文件在所在路径/protoc-gen-lua/plugin/protoc-gen-lua

到此为止相关的安装已经完成,可以测试一下安装的效果:

创建一个.proto文件如下:

syntax = "proto2";//标注使用的是 proto 的那个版本,一定要加入该行代码

// syntax = "proto3";//标注使用的是 proto 的那个版本

/**

标注使用的是 proto 的那个版本,一定要加入该行代码,

否则在最后执行导出lua文件时会报错提示指定使用的 proto 版本

**/

message Teacher {
      required int32 id = 1;

      required string name = 2;

      optional string email = 3;

      required int32 gender = 4;

}

接下来可以执行

protoc -I=./ --lua_out=./ *.proto

说明如下:

protoc protobuf 的指令

-I= 指定 proto 文件所在的目录文件夹

--lua_out= 指定导出转换后的 .lua 文件的存储目录

*.proto 文件名称.proto 要执行转换的 proto 文件名称(文件具体路径及名称)

也可直接创建一个 python 脚本文件或者 shell 脚本文件,直接批量执行拾取要转换的文件

protoc -I=./ --lua_out=./ *.proto

创建shell脚本直接使用下面代码

#方式一 python 和 shell均可使用次代码

# protoc -I=./ --lua_out=./ *.proto

 

#方式二 只有shell能使用

#!/bin/bash

for file in ./*.proto

do

    if test -f $file

    then

        protoc $file --lua_out=./

    fi

done

Q.E.D.