關(guān)于 · 安裝 · 變更 · 許可證 · 參考手冊 · 中英術(shù)語對照表
Lua 是一門強大、快速、輕量的嵌入式腳本語言。它由巴西里約熱內(nèi)盧 Pontifical Catholic 大學(xué)的 PUC-Rio 團隊 開發(fā)。 Lua 是一個 自由軟件, 廣泛應(yīng)用于世界上無數(shù)產(chǎn)品和項目。
Lua 的 官方網(wǎng)站 上提供了關(guān)于 Lua 的完整信息, 包括 綜合概要 和最新的 文檔, 需要注意的是 參考手冊 可能和 這里的版本 有所不同。
Lua 以 源代碼 的形式發(fā)布,使用之前,你需要構(gòu)建它。 構(gòu)建 Lua 非常簡單,因為 Lua 是用純粹的 ANSI C 實現(xiàn)的,在所有具備 ANSI C 編譯器的平臺都可以直接編譯。 同時,Lua 也可以直接以 C++ 形式編譯。 下面介紹了類 Unix 平臺上的構(gòu)建流程,另有 其它系統(tǒng)構(gòu)建介紹 與 配置選項 以作參考。
如果你沒有時間或興趣自己編譯 Lua, 可以從 LuaBinaries 獲取編譯后的二進制文件 或者從 LuaDist 這里獲取 Lua 的多平臺發(fā)布版(自帶電池)。
在大多數(shù)類 Unix 平臺上,輸入 "make" 加上合適的平臺名即可。步驟如下:
aix bsd c89 freebsd generic linux macosx mingw posix solaris
如果你的平臺在其中,運行 "make xxx" 即可,xxx 代表你的平臺名。
如果你的平臺不在其中,先嘗試最相近的平臺,再按 posix generic c89 順序依次嘗試。
如果你是 Linux 系統(tǒng)并出現(xiàn)了編譯錯誤,請確認你是否安裝了 readline (也可能叫 libreadline-dev 或者 readline-devel)開發(fā)包。 之后,如果還有鏈接錯誤,嘗試 "make linux MYLIBS=-ltermcap" 。
一旦你構(gòu)建完畢,可能希望把 Lua 安裝到系統(tǒng)默認位置, 那么執(zhí)行 "make install" 即可。 系統(tǒng)默認位置以及如何安裝都定義在 Makefile 中。 這個過程可能需要有相關(guān)的權(quán)限。
運行 "make xxx install" 可以構(gòu)建和安裝一步到位,xxx 指你的平臺名。
如果你想把 Lua 安裝在本地,運行 "make local"。 它會創(chuàng)建一個 install 目錄,內(nèi)有 bin, include, lib, man, share, 子目錄,并將下列文件安裝在其中。 如果你想安裝到本地其它目錄, 運行 "make install INSTALL_TOP=xxx",xxx 指你選擇的目錄。 由于安裝過程中會切換到 src 以及 doc 目錄進行, 所以當(dāng) INSTALL_TOP 不是絕對路徑時務(wù)必小心。
這些是開發(fā)時需要的目錄。 如果你僅僅想運行一些 Lua 程序, 那么只需要 bin 和 man 下的文件。 include 和 lib 下的文件用于將 Lua 嵌入 C 或 C++ 程序。
有三類定制,可以通過編輯文件完成:
其實你不必編輯 Makefile 文件,make 的時候在命令行指定相關(guān)變量即可。 當(dāng)然,編輯保存 Makefile 可以給定制留個記錄。
另一方面,如果你需要定制一些 Lua 特性,那就需要在構(gòu)建安裝 Lua 前 編輯 src/luaconf.h 。 編輯過的文件必須確保一致性,也就是只安裝在一個地方, 讓所有你編譯出來的用到 Lua 的程序都使用這唯一的這一份。 專家可以通過編輯 Lua 源代碼來定制更多的東西。
如果你不使用常規(guī)的 Unix 工具,那么構(gòu)建 Lua 的流程就取決于你使用的編譯器。 你需要創(chuàng)建若干工程來構(gòu)建庫,解釋器以及編譯器等。請把下列源文件加入相關(guān)工程:
把 Lua 以一個庫形式用于你的程序,你需要知道如何用你的編譯器創(chuàng)建庫和使用庫。 比如,以動態(tài)加載的 C 庫形式使用 Lua,你需要了解如何創(chuàng)建動態(tài)庫并讓 Lua API 函數(shù) 在動態(tài)庫中可見 — 不要 將 Lua 庫鏈入每個動態(tài)庫。 在 Unix 下,我們建議把 Lua 庫靜態(tài)鏈入宿主程序,然后將符號導(dǎo)出用于動態(tài)鏈接; src/Makefile 就是這樣處理 Lua 解釋器的。 在 Windows 下,我們建議把 Lua 庫編譯成一個 DLL 。 無論怎樣,編譯器 luac 都應(yīng)該靜態(tài)鏈接。
正如上面所述,你可以在構(gòu)建 Lua 前編輯 src/luaconf.h 以定制一些特性。
這里列出了 Lua 5.3 引入的主要變更。 參考手冊 中列出了 不兼容的地方。
ipairs
以及表處理庫都會考慮元方法
string.dump
多了裁減選項
table.move
string.pack
string.unpack
string.packsize
lua_gettable
以及類似函數(shù)會返回結(jié)果的值類型
lua_dump
增加了裁減選項
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg
表對所有代碼都可用
Lua is free software distributed under the terms of the MIT license reproduced below; it may be used for any purpose, including commercial purposes, at absolutely no cost without having to ask us. The only requirement is that if you do use Lua, then you should give us credit by including the appropriate copyright notice somewhere in your product or its documentation. For details, see this.
Copyright © 1994–2015 Lua.org, PUC-Rio.Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.