lua手工编译遇到的问题

适用于没有足够安装权限的用户


第一步是 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'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值