Mac下如何使用安装Protobuf及如何将.proto文件生成.lua文件

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一样强大的工具,用一用你就知道了!

<第一步>安装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

<第二步>安装完成后可以再自己电脑进入一个指定的目录中执行以下命令

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

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

./autogen.sh

<第三步>安装Protobuf,分别执行以下命令<这是一个需要时间的过程,耐心等待一下知道安装完成>

./configure

make check

make

make install

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

<第四步>安装Protobuf python

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

----------------------------------------------------------------------

Ran 826 tests in 3.347s

OK (skipped=12)

如下图:

<备注>

安装编译完成protobuf和protobuf-gen-lua后不安装protobuf python的话就会出现在最后生成protobuf lua文件时报错如下:

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

Traceback (most recent call last):

File "/usr/local/bin/protoc-gen-lua", line 17, in <module>

import plugin_pb2

File "/Users/fanlinsong/protoc-gen-lua/plugin/plugin_pb2.py", line 3, in <module>

from google.protobuf import descriptor

ImportError: No module named google.protobuf

--lua_out: protoc-gen-lua: Plugin failed with status code 1.

那么就是安装成功了,此时再导入对应的pb2.py文件即可使用。

--------------------------------------------------------------------------------------------------------------------------------------------------------

执行python setup.py install 时可能有:This script requires setuptools version 0.6c11 to run

可从:http://download.csdn.net/download/fhqsse220/5602687下载

gzip -d setuptools-0.6c11.tar.gz 

tar xf setuptools-0.6c11.tar

cd setuptools-0.6c11python setup.py install

返回如下则表示安装成功

Installed /usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg

Processing dependencies for setuptools==0.6c11

Finished processing dependencies for setuptools==0.6c11

----------------------------------------------------------------------------------------------

继续报错:error: package directory 'google/protobuf/compiler' does not exist

解决办法:在google/protobuf/下创建compiler文件夹

再次在protobuf文件夹下运行:python setup.py install 。最终提示安装成功。

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

<第五步>安装lua,可以进入lua的官方网站下载最新lua包

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

make macosx test 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

<第六步>安装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;

}

 

如果不加入 syntax = "proto2";汇报如下图错误:

接下来可以执行

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

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GFanStudio-LeeSir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值