您的位置:首页 > 编程语言 > Lua

mac 上使用protoc-gen-lua 生成lua 所遇到的一些坑

2017-09-06 17:20 627 查看
基本步骤:

1.protobuf安装
2.lua安装
3.pkg-config的安装
4.protoc-gen-lua安装


Terminal控制台相关命令:

cd 文件名 进入
ls 当前目录文件展示
tar -xf 压缩包名 解压
sudo 管理员指令执行
mkdir 文件夹名 创建文件夹
在写入文件的时候:
i 为insert 则是启动编辑模式
Esc退出编辑模式
输入:wq! 保存并退出


protobuf安装:

1.下载protobuf-2.6.1.tar.gz –这里以2.6.1版本为例

2.打开mac Terminal 终端 进入到下载目录



解压:

tar -xf protobuf-2.6.1.tar.gz


创建文件夹:

mkdir protobuf


进入protobuf-2.6.1

cd protobuf-2.6.1/


设置编译目录:

./configure --prefix=/Users/jose/Downloads/protobuf
prefix=后的路径具体即是你的编译路径,看你自己


安装

make
sudo make install


配置环境变量:

sudo vi .bashprofile
/*进入到环境变量文件按I键进行编辑*/
export PROTOBUF=/Users/jose/Downloads/protobuf

export PATH=$PROTOBUF/bin:$PATH


完成检测

protoc --version




如果这里有问题 没有办法找到 就直接将生成文件的目录下的protobuf/bin/protoc 拷贝到usr/local/bin/目录下,usr文件为隐藏文件

2.安装lua

下载

lua-5.1.5.tar.gz


解压后进入 lua-5.1.5

安装

sudo make macosx


完成检测

make test




3.安装pkg-config-0.28.tar.gz

下载解压并进入pkg-config-0.28文件夹

设置编译目录:

./configure --with-internal-glib


安装

sudo make install


4.安装protoc-gen-lua

下载

[protoc-gen-lua下载](https://github.com/sean-lin/protoc-gen-lua)


安装

cd protoc-gen-lua-master/protobuf/
make


解压后进入到该目录子目录protobuf后执行make 如果出现”lua.h” 或者”endian.h”的报错



lua.h问题可能是没有lua 没有装好,或者是bin目录下没有lua.pc文件 还有一种可能就是将protobuf/Makefile用编辑器打开将里面的内容替换并保存

CFLAGS=`pkg-config --cflags lua5.1` -std=gnu99
LDFLAGS=`pkg-config --libs lua5.1`
/*替换为*/
CFLAGS=`pkg-config --cflags lua` -std=gnu99
LDFLAGS=`pkg-config --libs lua`


endian.h问题报错需要修改protobuf/pb.c文件,用编辑器打开替换内从并保存

#ifdef _ALLBSD_SOURCE
#include <machine/endian.h>
#else
#include <endian.h>
#endif
/*替换为*/
#include <machine/endian.h>


解决了错误后继续在protobuf目录下执行make 命令 成功了会生成一个pb.so的文件



将protobuf同级目录下的plugin protoc-gen-lua 以及生成的pb.so拷贝到/usr/local/bin 目录下就大功告成了

参考资料:

在mac上使用protoc-gen-lua从proto文件生成lua

Mac安装Protobuf编译Java

protobuf 实战(1)mac安装篇

Mac OS X 上Lua的安装方法

以上文档给了我很多帮助, 也谢谢公司的同事给予的帮助

当然新建完成了如何批处理生成lua的pb文件呢创建一个文件夹,文件夹下新建一个文本命名以.sh结尾讲下列代码拷贝到文本中

eg: protoBuild.sh

#!/bin/bash
for file in ./*.proto
do
if test -f $file
then
protoc $file --lua_out=./
fi
done


将需要导出的proto文件拷贝到当前目录,在Terminal中进入到当前目录 输入

. protoBuild.sh /*为你的文件名*/


当然你可以将文中的./*proto的输入路径和lua_out=./的输出路径换成你自己的工程目录路径,就更方便了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua mac protobuf