在Linux下的lua環境安裝問題及簡單使用

在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= (INSTALLTOP)/share/lua/(INSTALL_TOP)/share/lua/V
INSTALL_CMOD= (INSTALLTOP)/lib/lua/(INSTALL_TOP)/lib/lua/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=R"@echo"prefix=R" @echo "prefix=(INSTALL_TOP)”
@echo “libdir=(INSTALLLIB)"@echo"includedir=(INSTALL_LIB)" @echo "includedir=(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

(end of Makefile)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章