码迷,mamicode.com
首页 > 其他好文 > 详细

编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法

时间:2016-03-18 00:14:12      阅读:1096      评论:0      收藏:0      [点我收藏+]

标签:

从官网上下载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存在未定义的引用解决方法

标签:

原文地址:http://www.cnblogs.com/kokoer-wu/p/5289904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!