zoukankan      html  css  js  c++  java
  • lua-5.2.3编译问题记录"libreadline.so: undefined reference to `PC'"

      作者:zhanhailiang 日期:2014-10-21
    [root@~/software]# cd lua-5.2.3
    [root@~/software/lua-5.2.3]# make linux
    cd src && make linux
    make[1]: Entering directory `/root/software/lua-5.2.3/src'
    make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
    make[2]: Entering directory `/root/software/lua-5.2.3/src'
    gcc -o lua   lua.o liblua.a -lm -Wl,-E -ldl -lreadline 
    /usr/local/lib/libreadline.so: undefined reference to `PC'
    /usr/local/lib/libreadline.so: undefined reference to `tgetflag'
    /usr/local/lib/libreadline.so: undefined reference to `tgetent'
    /usr/local/lib/libreadline.so: undefined reference to `UP'
    /usr/local/lib/libreadline.so: undefined reference to `tputs'
    /usr/local/lib/libreadline.so: undefined reference to `tgoto'
    /usr/local/lib/libreadline.so: undefined reference to `tgetnum'
    /usr/local/lib/libreadline.so: undefined reference to `BC'
    /usr/local/lib/libreadline.so: undefined reference to `tgetstr'
    collect2: ld returned 1 exit status
    make[2]: *** [lua] Error 1
    make[2]: Leaving directory `/root/software/lua-5.2.3/src'
    make[1]: *** [linux] Error 2
    make[1]: Leaving directory `/root/software/lua-5.2.3/src'
    make: *** [linux] Error 2

    这是由于lua编译依赖readline库,readline库依赖ncurses库。但没有指定。就会出现“没有定义的符合引用”错误。

    解决方式是改动${LUA_DIR}/src/Makefile中linux编译target=linux。在SYSLIBS变量中追加‘-lncurses’选项就可以。例如以下:

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

    此时又一次运行:

    [root@~/software/lua-5.2.3]# make linux install
    cd src && make linux
    make[1]: Entering directory `/root/software/lua-5.2.3/src'
    make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
    make[2]: Entering directory `/root/software/lua-5.2.3/src'
    make[2]: Nothing to be done for `all'.
    make[2]: Leaving directory `/root/software/lua-5.2.3/src'
    make[1]: Leaving directory `/root/software/lua-5.2.3/src'
    cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.2 /usr/local/lib/lua/5.2
    cd src && install -p -m 0755 lua luac /usr/local/bin
    cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h lua.hpp /usr/local/include
    cd src && install -p -m 0644 liblua.a /usr/local/lib
    cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1

    至此,lua-5.2.3成功安装:

    [root@~/software/lua-5.2.3/src]# /usr/local/bin/lua -v
    Lua 5.2.3  Copyright (C) 1994-2013 Lua.org, PUC-Rio
  • 相关阅读:
    Windows 2003 服务器 关闭IIS中FTP匿名访问
    Linux 服务器 关闭FTP匿名访问
    CentOS 7 配置本地 YUM源
    Linux中使用MegaCli工具查看、管理Raid卡信息
    Linux 6 本地网络配置方法
    勒索病毒,华为/H3C三层交换机/路由器用ACL访问控制实现端口禁用
    Linux RedHat7.0_64位系统中安装Oracle_11g_R2
    Linux 7 重置root密码
    windows 系统防火墙 添加端口号方法
    SpringBoot 2.x (12):整合Elasticsearch
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7138020.html
Copyright © 2011-2022 走看看