在ubuntu16.0.4上安装lua 5.3.5,运行命令
make linux
很可能有的朋友的终端中出现以下错误:
原因是缺少libreadline-dev依赖包,造成找不到readline.h
lua.c:82:31: fatal error: readline/readline.h: No such file or directory
compilation terminated.
: recipe for target ‘lua.o’ failed
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory ‘/usr/local/lua/lua-5.3.5/src’
Makefile:110: recipe for target ‘linux’ failed
make[1]: *** [linux] Error 2
make[1]: Leaving directory ‘/usr/local/lua/lua-5.3.5/src’
Makefile:55: recipe for target ‘linux’ failed
make: *** [linux] Error 2
所以以防万一,我们从以下步骤开始:
1,添加libreadline-dev 包
使用命令:
sudo apt-get install libreadline-dev
2,执行命令:
sudo apt-get install libreadline6-dev
3,执行命令:
sudo apt-get install libtinfo-dev
通过以上三个命令解决好上述问题(不管是否有那些问题的电脑,我们都执行一遍,避免后续出现此问题)
//以下步骤需要联网
4,使用此命令curl --help可以了解是否安装curl命令,若没有,执行命令:
sudo apt-get install curl
安装curl
5,下载安装包,执行命令:
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
6,解压.tar.gz文件包(自己根据实际情况,选择解压路径)
tar zxf lua-5.3.5.tar.gz
7,进入lua-5.3.5目录,使用命令:
cd lua-5.3.5
8,查看目录中的文件:
ls -l
注:doc和src为目录,Makefile文件内容备注会列出
9,执行“ make”,然后查看您的平台是否已列出。 当前支持的平台是:
aix bsd c89 freebsd generic linux macosx mingw posix solaris
10,通过上述命令,如果列出了您的平台,则只需执行“ make xxx”,其中xxx是您的平台名称。
(我的是Ubuntu系统)所以执行的命令是:
make linux
11,执行上述命令后,可在src目录中生成三个文件:lua(解释器),luac(编译器)和liblua.a(库),进入src目录使用ls -l查看
12,检查lua是否构建好,使用命令:
make test 如果构建好将运行解释器并打印其版本。
13,安装:
make install
14,通过上述命令,lua环境安装好,检查以下环境是否安装好,在终端输入:lua -v检查版本号,若有版本号输出则安装成功
15,写程序:
输入
lua 进入环境,然后输入print(“Hello World!!!”)
终端将打印出:
Hello World!!!
至此环境已搭建好
注:退出环境使用 “CTRL + D”
**备注:**Makefile中的内容(有兴趣的朋友可以分析学习)
Makefile for installing Lua
See doc/readme.html for installation and customization instructions.
== CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================
Your platform. See PLATS for possible values.
PLAT= none
Where to install. The installation starts in the src and doc directories,
so take care if INSTALL_TOP is not an absolute path. See the local target.
You may want to make INSTALL_LMOD and INSTALL_CMOD consistent with
LUA_ROOT, LUA_LDIR, and LUA_CDIR in luaconf.h.
INSTALL_TOP= /usr/local
INSTALL_BIN= $(INSTALL_TOP)/bin
INSTALL_INC= $(INSTALL_TOP)/include
INSTALL_LIB= $(INSTALL_TOP)/lib
INSTALL_MAN= $(INSTALL_TOP)/man/man1
INSTALL_LMOD= V
INSTALL_CMOD= V
How to install. If your install program does not support “-p”, then
you may have to run ranlib on the installed liblua.a.
INSTALL= install -p
INSTALL_EXEC= $(INSTALL) -m 0755
INSTALL_DATA= $(INSTALL) -m 0644
If you don’t have “install” you can use “cp” instead.
INSTALL= cp -p
INSTALL_EXEC= $(INSTALL)
INSTALL_DATA= $(INSTALL)
Other utilities.
MKDIR= mkdir -p
RM= rm -f
== END OF USER SETTINGS – NO NEED TO CHANGE ANYTHING BELOW THIS LINE =======
Convenience platforms targets.
PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
What to install.
TO_BIN= lua luac
TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
TO_LIB= liblua.a
TO_MAN= lua.1 luac.1
Lua version and release.
V= 5.3
R= $V.4
Targets start here.
all: $(PLAT)
$(PLATS) clean:
cd src && $(MAKE) $@
test: dummy
src/lua -v
install: dummy
cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
uninstall:
cd src && cd $(INSTALL_BIN) && $(RM) $(TO_BIN)
cd src && cd $(INSTALL_INC) && $(RM) $(TO_INC)
cd src && cd $(INSTALL_LIB) && $(RM) $(TO_LIB)
cd doc && cd $(INSTALL_MAN) && $(RM) $(TO_MAN)
local:
$(MAKE) install INSTALL_TOP=…/install
none:
@echo “Please do ‘make PLATFORM’ where PLATFORM is one of these:”
@echo " $(PLATS)"
@echo “See doc/readme.html for complete instructions.”
make may get confused with test/ and install/
dummy:
echo config parameters
echo:
@cd src && $(MAKE) -s echo
@echo “PLAT= $(PLAT)”
@echo “V= $V”
@echo “R= $R”
@echo “TO_BIN= $(TO_BIN)”
@echo “TO_INC= $(TO_INC)”
@echo “TO_LIB= $(TO_LIB)”
@echo “TO_MAN= $(TO_MAN)”
@echo “INSTALL_TOP= $(INSTALL_TOP)”
@echo “INSTALL_BIN= $(INSTALL_BIN)”
@echo “INSTALL_INC= $(INSTALL_INC)”
@echo “INSTALL_LIB= $(INSTALL_LIB)”
@echo “INSTALL_MAN= $(INSTALL_MAN)”
@echo “INSTALL_LMOD= $(INSTALL_LMOD)”
@echo “INSTALL_CMOD= $(INSTALL_CMOD)”
@echo “INSTALL_EXEC= $(INSTALL_EXEC)”
@echo “INSTALL_DATA= $(INSTALL_DATA)”
echo pkg-config data
pc:
@echo “version=(INSTALL_TOP)”
@echo “libdir=(INSTALL_INC)”
list targets that do not create files (but not all makes understand .PHONY)
.PHONY: all $(PLATS) clean test install local none dummy echo pecho lecho