- 从官网下载Lua源码,并解压出来,以lua-5.3.5为例
- 进入 lua-5.3.5\src 目录,编辑Makefile文件
找到这行代码
CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS)
修改为
CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) -fPIC #后面加的-fPIC表示要编译位置无关代码
找到
LUA_A = liblua.a
下面添加一行
LUA_SO = liblua.so #表示新建一个目标,要编译出lua动态库,编译出来的 动态库文件名字为liblua.so
找到
ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
改为
ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO) 表示添加上刚才的目标
找到
$(LUA_A): $(BASE_O)
$(AR) $@ $?
$(RANLIB) $@
在下面添加一行
$(LUA_SO): $(CORE_O) $(LIB_O)
$(CC) -o $@ -shared $? -ldl -lm 注意:本行前面的空格其实是一个tab
保存该makefile文件,回到上层目录,即回到目录 lua-5.3.5/ 打开Makefile 文件
找到
TO_LIB= liblua.a
修改为
TO_LIB= liblua.a liblua.so # 表示同时编译静态库和动态库
保存该makefile文件,然后执行命令
make linux
后面的linux表示当前平台即可在当前目录,即 lua-5.3.5/src目录下 得到编译出来的静态库liblua.a,动态库liblua.so