安装lua环境报错

安装lua环境:

lua安装包下载地址: http://www.lua.org/ftp/lua-5.3.0.tar.gz

tar zxf lua-5.3.0.tar.gz

cd lua-5.3.0

make linux test

make install

问题一:

报lua.c:67:31: fatal error: readline/readline.h: No such file or directory

解决:

说明缺少libreadline依赖包

下载readline-6.2.tar.gz

wget -c ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz

放到某个目录下,如/usr/local/

并解压出来 tar xzvf readline-6.2.tar.gz

进入源码目录 cd /usr/local/readline-6.2

执行./configure 生成针对系统环境的编译文件Makefile,里面有编译后.a .so include等所要放置的位置及ln链接等操作

编译和安装

make && make install

安装完成后能看到静态库 动态库 头文件已经放置到既定位置

/usr/local/lib/libreadline.a

/usr/local/lib/libreadline.so

/usr/local/include/readline/

再去编译lualua就能顺利完成了。

问题二:依赖ncurses

gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -c -o lua.o lua.c

gcc -std=gnu99 -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so when searching for -lreadline
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.a(display.o): In function cr':<br/>(.text+0x1ed): undefined reference totputs'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.a(display.o): In function _rl_move_vert':<br/>(.text+0x31f): undefined reference totputs'

解决:

由于lua编译依赖readline库,而其依赖ncurses库,但没有指定,所以出现“未定义的符合引用”错误。需要修改${LUA_DIR}/src/Makefile中linux编译target,在SYSLIBS变量中追加‘-lncurses’选项即可。修改后,如下:

问题三:

安装完之后,系统将程序安装在制定的build目录下build=/home/lua/lua-5.3.0/src/

可以看到该目录下有个lua.h的头文件和lua的可执行程序,可以运行lua这个命令进入lua行解析状态,进行一个软连接处理,将lua.h和lua链接到 /usr/include 和/usr/bin/ 目录下

cd /usr/include

ln -s /home/lua/lua-5.3.0/src/lua.h lua.h

cd /usr/bin/

ln -s /home/lua/lua-5.3.0/src/lua lua

相关文章
相关标签/搜索