如何在 skynet 中加入 C 库 - cloudwu/skynet GitHub Wiki
直接修改 Makefile 的方案
skynet 作为 submodule 的方案
LUA_CLIB_PATH ?= luaclib
LUA_INC ?= skynet/3rd/lua
CFLAGS = -g -O0 -Wall -I$(LUA_INC)
SHARED := -fPIC --shared
$(LUA_CLIB_PATH) :
mkdir $(LUA_CLIB_PATH)
$(LUA_CLIB_PATH)/cjson.so : 3rd/lua-cjson/lua_cjson.c 3rd/lua-cjson/strbuf.c 3rd/lua-cjson/fpconv.c | $(LUA_CLIB_PATH)
$(CC) $(CFLAGS) $(SHARED) -I3rd/lua-cjson $^ -o $@
LUA_CLIB = cjson
all: \
$(LUA_CLIB_PATH) \
$(foreach v, $(LUA_CLIB), $(LUA_CLIB_PATH)/$(v).so)
参考 hanxi/skynet-demo/blob/master/Makefile
注意要点
- 编译 so 的 lua 版本和 skynet 使用的 lua 版本一致,要么同时使用
3rd/lua
,要么同时使用系统的 lua 版本。 - 编译 so 时不能 link liblua.a 静态库。