ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 概述 环境: * lua5.3 * pbc * 安装protoc 由于我使用的是云风的pbc,该项目中的一个文件protobuf.lua 使用了module语法在lua5.1版本中已经删除,最新的skynet是lua5.4版本,于是我找到了解析protobuf的lua库。 ## 资源下载 ubuntu安装`protoc` ``` $ sudo apt-get install protobuf-c-compiler protobuf-compiler ``` 验证安装是否完成 ``` $ protoc --version ``` * 安装[lua5.3](http://www.lua.org/ftp/lua-5.3.0.tar.gz) ``` $ wget http://www.lua.org/ftp/lua-5.3.0.tar.gz $ cp -r lua-5.3.0.tar.gz /usr/local/ && cd /usr/local $ tar -zxvf lua-5.3.0.tar.gz //这一步不同平台有所不同 $ cd lua-5.3.0 && make linux //创建软链接,是lua可以在当前环境下随处可用: $ ln -s /usr/local/lua-5.3.0/src/lua /usr/bin/lua ``` 下载`pbc` ```shell $ git clone https://github.com/cloudwu/pbc.git ``` ## 编译 ### 项目编译 ``` $ cd pbc $ make linux ``` ### 工具编译 修改`pbc/binding/lua/Makefile`中lua库的地址配置信息`LUADIR`为当前lua安装的地址, 在编译指令后面加上`-llua`。 ``` LUADIR = /usr/local/src/lua-5.3.0/src $(CC) $(CFLAGS) $(SHARED) -o $@ -I../.. -I$(LUADIR) -L../../build $^ -lpbc -llua ``` 用终端进入pbc项目`pbc/binding/lua` 目录下面编译出 protobuf.so: ``` $ cd pbc/binding/lua $ make ``` ## 并入项目 * 编译成功的话,将`protobuf.so`放在config文件中`lua_cpath`项配置的目录下面,同时将`protobuf.lua`放在config文件`lua_path`配置的目录下,就可以调用protobuf中的库方法。我当前项目这两项的配置如下: ```lua lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua" lua_cpath = root .. "luaclib/?.so" ``` * 则移动文件命令可以如下: ```shell sudo cp protobuf.so /application/skynet/luaclib sudo cp protobuf.lua /application/skynet/lualib ``` 将协议文件到处为.pb格式: ``` sudo protoc --descriptor_set_out Person.pb Person.proto ```