本文共 1686 字,大约阅读时间需要 5 分钟。
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/libgcc -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"转载地址:http://yewvi.baihongyu.com/