编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法相关的知识,希望对你有一定的参考价值。
从官网上下载5.3.2的源码后,make linux进行编译,提示报错:
gcc -std=gnu99 -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline /usr/local/lib/libreadline.so:对‘tputs’未定义的引用 /usr/local/lib/libreadline.so:对‘tgoto’未定义的引用 /usr/local/lib/libreadline.so:对‘tgetflag’未定义的引用 /usr/local/lib/libreadline.so:对‘UP’未定义的引用 /usr/local/lib/libreadline.so:对‘tgetent’未定义的引用 /usr/local/lib/libreadline.so:对‘tgetnum’未定义的引用 /usr/local/lib/libreadline.so:对‘PC’未定义的引用 /usr/local/lib/libreadline.so:对‘tgetstr’未定义的引用 /usr/local/lib/libreadline.so:对‘BC’未定义的引用 collect2: error: ld returned 1 exit status Makefile:63: recipe for target ‘lua‘ failed make[2]: *** [lua] Error 1 make[2]: Leaving directory ‘/home/abuu/project/lua-5.3.2/src‘ Makefile:110: recipe for target ‘linux‘ failed make[1]: *** [linux] Error 2 make[1]: Leaving directory ‘/home/abuu/project/lua-5.3.2/src‘ Makefile:55: recipe for target ‘linux‘ failed make: *** [linux] Error 2
报错原因是无法从libreadline.so库中定位tputs、tgoto等函数位置,那这些函数可能是由其他共享库所引入。
上网查询一下这些函数,发现这些函数来源于ncurses,于是从官网上下载ncurses源码进行编译。
安装完ncurses后再次"make linux"试了试,依然报错,于是检查、添加依赖,在src/Makefile中修改如下:
linux: $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
保存后再次编译,通过。
以上是关于编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法的主要内容,如果未能解决你的问题,请参考以下文章
登录mysqlpxc报错找不到库文件libreadline.so.7
uos运行ejtag报错,找不到libreadline.so.6, libncurses.so.5, libusb-0.1.so.4
lua-5.2.3编译问题记录"libreadline.so: undefined reference to `PC'"