适用于没有足够安装权限的用户
第一步是 make
第二步 make linux这里出错了,提示如下
luaconf.h:275:31: error: readline/readline.h: No such file or directory
luaconf.h:276:30: error: readline/history.h: No such file or directory
lua.c: In function 'pushline':
lua.c:182: warning: implicit declaration of function 'readline'
lua.c:182: warning: assignment makes pointer from integer without a cast
lua.c: In function 'loadline':
lua.c:210: warning: implicit declaration of function 'add_history'
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory `/data/source/lua-5.1.4/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/data/source/lua-5.1.4/src'
make: *** [linux] Error 2
这是因为没有readline-devel ncurses-devel
如果自己有足够的权限,直接
yum install -y readline-devel ncurses-devel
或者 下载两个压缩包,执行./configure make make install
因为自己没有足够的权限,采用修改lua的makefile的方法。
lua的src目录的Makefile
修改1:
CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS) -I/data/app/project
注意/data/app/project是自己编译readline的目录,注意readline的目录,编译时修改一下文件夹名,不要带版本号,因此lua.c中使用的头文件是readline/readline.h
修改2:
MYLDFLAGS=-L/data/app/project/readline -L/data/app/project/ncurses/lib
这两个目录,是编译好的libreadline.a和libncurses.a所在的目录。
修改3:
linux:
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
实际应该修改readline的makefile,但短时间内修改正确,直接修改lua的makefile了。
如果没有ncurses,会报下面的错误:
gcc -std=gnu99 -o lua -L/data/app/project/readline lua.o liblua.a -lm -Wl,-E -ldl -lreadline
/data/app/project/readline/libreadline.a(display.o): In function `cr':
/data/app/project/readline/display.c:2597: undefined reference to `tputs'
/data/app/project/readline/libreadline.a(display.o): In function `_rl_clear_screen':
/data/app/project/readline/display.c:2474: undefined reference to `tputs'
/data/app/project/readline/libreadline.a(display.o): In function `_rl_clear_to_eol':
/data/app/project/readline/display.c:2448: undefined reference to `tputs'
/data/app/project/readline/libreadline.a(display.o): In function `_rl_move_vert':
/data/app/project/readline/display.c:2134: undefined reference to `tputs'
/data/app/project/readline/display.c:2150: undefined reference to `tputs'