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
  • 相关阅读:
    C#变量
    C#数据类型、标识符和关键字
    【算法】Hough变换
    RANSAC 剔除错误匹配 估计模型
    【Hector slam】A Flexible and Scalable SLAM System with Full 3D Motion Estimation
    【排序】插入排序:最稳定:时间复杂度O(n^2)
    【matlab】查看程序运行时间
    【matlab】合并两个cell
    【matlab】膨胀
    【ros】.bag文件
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7138020.html
Copyright © 2011-2022 走看看