• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

lua编译错误libreadline.so:undefinedreferencetolua

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

下载lua源码,编译安装。编译的时候编译错误,源码里面自带有Makefile文件,不用执行./configure生成makefile文件。可以直接make,但是直接输入make会报错,得指定操作系统类型,例如make linux test。然后这个时候就会报错了:

 

make[1]: Entering directory `/root/joygp/nginx-lua/lua-5.2.3/src'
make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
make[2]: Entering directory `/root/joygp/nginx-lua/lua-5.2.3/src'
gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `PC'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetflag'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetent'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `UP'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tputs'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgoto'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetnum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `BC'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetstr'
collect2: ld returned 1 exit status
make[2]: *** [lua] Error 1
make[2]: Leaving directory `/root/joygp/nginx-lua/lua-5.2.3/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/root/joygp/nginx-lua/lua-5.2.3/src'
make: *** [linux] Error 2

于是网上百度了一下:

由于lua编译依赖readline库,而其依赖ncurses库,但没有指定,所以出现“未定义的符合引用”错误。因此输入命令:

yum -y install readline-devel ncurses-devel

安装两个库吗,结果提示已经是最新版本了,已经安装了。locate readline确实存在。然后需要修改makefile文件,即在SYSLIBS变量中追加‘-lncurses’选项即可。

刚开始直接修改当前目录下的Makefile文件,结果怎么都找不到添加的地方,找不到SYSLIBS变量,然后在TO_LIB= liblua.a  后面添加-lncurses 成TO_LIB= liblua.a  -lncurses。再次make一次,结果还是报错,而且发现编译的命令上还是没有 -lncurses,于是仔细看了下发现需要修改/lua-5.2.3/src里面Makefile文件,然后修改下,最终编译通过。

然后以为需要和其他软件一样,make完之后需要make install,结果make install报错,但是没有报任何错误。输入lua命令,发现可以执行,说明lua已经安装成功了。

折腾了半天,就一小问题,lua源码有两个Makefile文件,shit!

 

 

 

 

 

 

需要修改${LUA_DIR}/src/Makefile中linux编译target,在SYSLIBS变量中追加‘-lncurses’选项即可。修改后,如下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[原创]cocos2d-x+Lua接入iOS原生SDK的实现方案发布时间:2022-07-22
下一篇:
Nginx内嵌lua脚本,结合Redis使用发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap