在linux上搭建lua开发环境

2019-07-13 09:06发布

1.获取lua源码 源码下载地址:http://www.lua.org/download.html 我下载的版本是:lua-5.3.4
2.解压lua源码 tar xvf lua-5.3.4.tar.gz
3.编译lua源码 输入命令: make linux install
提示错误 gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -c -o lua.o lua.c lua.c:80:31: 错误:readline/readline.h:没有那个文件或目录 lua.c:81:30: 错误:readline/history.h:没有那个文件或目录 lua.c: 在函数‘pushline’中: lua.c:312: 警告:隐式声明函数‘readline’ lua.c:312: 警告:赋值时将整数赋给指针,未作类型转换 lua.c: 在函数‘loadline’中: lua.c:377: 警告:隐式声明函数‘add_history’ 4.修复错误,安装readline 我尝试过从readline官网下载来编译,最后会提示“未定义引用” 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
最好的方法是用ubuntu自带的安装方式 apt-cache search readline sudo apt-get install libreadline6 libreadline6-dev 正在读取软件包列表... 完成 正在分析软件包的依赖关系树        正在读取状态信息... 完成        libreadline6 已经是最新的版本。 下列软件包是自动安装的并且现在不需要了:   libpth20 libx264-142:i386 unicon-imc2 Use 'apt-get autoremove' to remove them. 下列【新】软件包将被安装:   libreadline6-dev 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 357 个软件包未被升级。 需要下载 0 B/213 kB 的软件包。 解压缩后会消耗掉 857 kB 的额外空间。 您希望继续执行吗? [Y/n] y (正在读取数据库 ... 系统当前共安装有 249280 个文件和目录。) 正准备解包 .../libreadline6-dev_6.3-4ubuntu2_amd64.deb  ... 正在解包 libreadline6-dev:amd64 (6.3-4ubuntu2) ... 正在处理用于 install-info (5.2.0.dfsg.1-2) 的触发器 ... 正在设置 libreadline6-dev:amd64 (6.3-4ubuntu2) ... 5.最后再尝试编译lua root@maya-g450:/home/maya/work_space/soft/lua-5.3.4# make linux cd src && make linux make[1]: 正在进入目录 `/home/maya/work_space/soft/lua-5.3.4/src' make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline " make[2]: 正在进入目录 `/home/maya/work_space/soft/lua-5.3.4/src' gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lapi.o lapi.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lcode.o lcode.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lctype.o lctype.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ldebug.o ldebug.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ldo.o ldo.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ldump.o ldump.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lfunc.o lfunc.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lgc.o lgc.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o llex.o llex.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lmem.o lmem.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lobject.o lobject.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lopcodes.o lopcodes.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lparser.o lparser.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lstate.o lstate.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lstring.o lstring.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ltable.o ltable.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ltm.o ltm.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lundump.o lundump.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lvm.o lvm.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lzio.o lzio.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lauxlib.o lauxlib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lbaselib.o lbaselib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lbitlib.o lbitlib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lcorolib.o lcorolib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ldblib.o ldblib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o liolib.o liolib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lmathlib.o lmathlib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o loslib.o loslib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lstrlib.o lstrlib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o ltablib.o ltablib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lutf8lib.o lutf8lib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o loadlib.o loadlib.c gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o linit.o linit.c ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o ranlib liblua.a gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o lua.o lua.c gcc -std=gnu99 -o lua -L/usr/local/readline/lib lua.o liblua.a -lm -Wl,-E -ldl -lreadline gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -I/usr/local/readline/include -c -o luac.o luac.c gcc -std=gnu99 -o luac -L/usr/local/readline/lib luac.o liblua.a -lm -Wl,-E -ldl -lreadline make[2]:正在离开目录 `/home/maya/work_space/soft/lua-5.3.4/src' make[1]:正在离开目录 `/home/maya/work_space/soft/lua-5.3.4/src' 再执行安装lua
root@maya-g450:/home/maya/work_space/soft/lua-5.3.4# make install cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.3 /usr/local/lib/lua/5.3 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 6.测试lua
7.最简单的安装方式:sudo apt-get install lua5.2
topeet@ubuntu:~$ sudo apt-get install lua5.2 Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libstdc++6:i386 libxfixes3:i386 libx11-xcb-dev libdrm-nouveau2 libdrm-nouveau2:i386 libxdamage-dev libdrm-radeon1:i386 libxxf86vm1:i386 libxcb-glx0:i386 libx11-xcb1:i386 libtxc-dxtn-s2tc0:i386 libxxf86vm-dev x11proto-gl-dev libexpat1:i386 libdrm2:i386 libdrm-dev x11proto-xf86vidmode-dev libxrandr-ltsq2 libxcb-glx0-dev x11proto-damage-dev libdrm-intel1:i386 libxdamage1:i386 libxext6:i386 libllvm3.1 libllvm3.1:i386 Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: lua5.2 0 upgraded, 1 newly installed, 0 to remove and 536 not upgraded. Need to get 156 kB of archives. After this operation, 359 kB of additional disk space will be used. Get:1 http://mirrors.163.com/ubuntu/ precise-updates/universe lua5.2 amd64 5.2.0-2ubuntu0.1 [156 kB] Fetched 156 kB in 0s (609 kB/s) Selecting previously unselected package lua5.2. (Reading database ... 172409 files and directories currently installed.) Unpacking lua5.2 (from .../lua5.2_5.2.0-2ubuntu0.1_amd64.deb) ... Processing triggers for man-db ... Setting up lua5.2 (5.2.0-2ubuntu0.1) ... update-alternatives: using /usr/bin/lua5.2 to provide /usr/bin/lua (lua-interpreter) in auto mode. update-alternatives: using /usr/bin/luac5.2 to provide /usr/bin/luac (lua-compiler) in auto mode.


参考资料: 1.http://blog.sina.com.cn/s/blog_5efa55090100s4ci.html 2.http://www.tuicool.com/articles/eQFf63v
3.http://blog.csdn.net/aizquan/article/details/21190393