编译lua5.3.3

1、下载lua最新的库并解压:

https://www.lua.org/download.html

#tar -zxf  lua-5.3.3.tar.gz

2、下载readline库并解压编译,因为lua.c引用了readline库

下载地址:ftp://ftp.gnu.org/gnu/readline/

#tar -zxf readline-6.3.tar.gz

#cd readline-6.3

#./configure --prefix=/home/XX/Desktop/lua-5.3.3/out && make && make install

3、修改lua-5.3.3/src/Makefile下面两行

CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS) -I/home/XX/Desktop/lua-5.3.3/out/include
LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)  -L/home/XX/Desktop/lua-5.3.3/out/lib


gcc -std=gnu99 -o lua    -L/home/wifi/Desktop/lua-5.3.3/out/lib lua.o liblua.a -lm -Wl,-E -ldl -lreadline 
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `tputs'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `tgoto'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `tgetflag'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `UP'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `tgetent'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `tgetnum'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `PC'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `tgetstr'
/home/XX/Desktop/lua-5.3.3/out/lib/libreadline.so: undefined reference to `BC'
collect2: error: ld returned 1 exit status
Makefile:64: recipe for target 'lua' failed
make[2]: *** [lua] Error 1


报这个错是因为lua 依赖readline,而readline依赖ncurses,但没有指定,就会出现“未定义的符合引用”错误。

解决方案是修改${LUA_DIR}/src/Makefile中linux编译target=linux,在SYSLIBS变量中追加‘-lncurses’选项即可。如下:

linux:
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值