在linux上搭建lua开发环境

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值