您的位置:首页 > 运维架构 > Linux

在linux上搭建lua开发环境

2017-06-27 00:55 309 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua 物联网