Lua 欢迎使用 Lua 5.4

关于 Lua

Lua 是一种功能强大、高效、轻量、可嵌入的脚本语言,由巴西里约热内卢教皇天主教大学(PUC-Rio)的 团队 开发。Lua 是 免费软件,在全世界范围内被用于 许多产品和项目 中。

Lua 的 官方网站 提供了关于 Lua 的完整信息,包括 执行摘要 和更新的 文档,尤其是 参考手册,它可能与本软件包中分发的 本地副本 略有不同。

安装 Lua

Lua 以 源代码 的形式分发。在使用之前,您需要构建它。构建 Lua 应该很简单,因为 Lua 是用纯 ANSI C 实现的,并且可以在所有已知具有 ANSI C 编译器的平台上进行未修改的编译。Lua 也可作为 C++ 进行未修改的编译。下面给出的构建 Lua 的说明适用于类 Unix 平台,例如 Linux 和 Mac OS X。另请参阅 其他系统的说明自定义选项

如果您没有时间或意愿自己编译 Lua,请从 LuaBinaries 获取二进制文件。

构建 Lua

在大多数常见的类 Unix 平台上,只需执行 "make"。以下是详细信息。

  1. 打开一个终端窗口并移动到名为 lua-5.4.6 的顶级目录。那里的 Makefile 控制构建过程和安装过程。

  2. 执行 "make"。Makefile 将猜测您的平台并为其构建 Lua。

  3. 如果猜测失败,请执行 "make help" 并查看您的平台是否在列表中。当前支持的平台是

    guess aix bsd c89 freebsd generic ios linux linux-readline macosx mingw posix solaris

    如果您的平台在列表中,只需执行 "make xxx",其中 xxx 是您的平台名称。

    如果您的平台未列出,请按以下顺序尝试最接近的一个或 posix、generic、c89。

  4. 编译只需几分钟,并在 src 目录中生成三个文件:lua(解释器)、luac(编译器)和 liblua.a(库)。

  5. 若要检查 Lua 是否已正确构建,请在构建 Lua 后执行 "make test"。这将运行解释器并打印其版本。

如果您正在运行 Linux,请尝试 "make linux-readline" 以构建交互式 Lua 解释器,该解释器具有便捷的行编辑和历史记录功能。如果您遇到编译错误,请确保您已安装 readline 开发包(可能名为 libreadline-devreadline-devel)。如果您在那之后遇到链接错误,请尝试 "make linux-readline MYLIBS=-ltermcap"。

安装 Lua

在构建 Lua 后,您可能希望将其安装在系统中的官方位置。在这种情况下,请执行 "make install"。官方位置和安装文件的方式在 Makefile 中定义。您可能需要获得安装文件的正确权限,因此可能需要执行 "sudo make install"。

若要一步构建并安装 Lua,请执行 "make all install" 或 "make xxx install",其中 xxx 是您的平台名称。

若要在构建后在本地安装 Lua,请执行 "make local"。这将创建一个目录 install,其中包含子目录 binincludelibmanshare,并按如下所列安装 Lua。若要将 Lua 本地安装在其他目录中,请执行 "make install INSTALL_TOP=xxx",其中 xxx 是您选择的目录。安装从 srcdoc 目录开始,因此如果 INSTALL_TOP 不是绝对路径,请小心。

bin
lua luac
include
lua.h luaconf.h lualib.h lauxlib.h lua.hpp
lib
liblua.a
man/man1
lua.1 luac.1

这些是您进行开发所需的唯一目录。如果您只想运行 Lua 程序,则只需要 binman 中的文件。在 C 或 C++ 程序中嵌入 Lua 需要 includelib 中的文件。

定制

可以通过编辑文件来自定义三类内容

实际上你不需要编辑 Makefile,因为你可以在调用 make 时在命令行中设置相关变量。然而,最好编辑并保存 Makefile 以记录你所做的更改。

另一方面,如果你需要自定义一些 Lua 特性,你需要在构建和安装 Lua 之前编辑 src/luaconf.h。编辑后的文件将被安装,并且将被你构建的任何 Lua 客户端使用,以确保一致性。专家可以通过编辑 Lua 源代码进行进一步的自定义。

在其他系统上构建 Lua

如果你没有使用通常的 Unix 工具,那么构建 Lua 的说明取决于你使用的编译器。你需要为构建库、解释器和编译器创建项目(或你的编译器使用的任何内容),如下所示

lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c ltm.c lundump.c lvm.c lzio.c lauxlib.c lbaselib.c lcorolib.c ldblib.c liolib.c lmathlib.c loadlib.c loslib.c lstrlib.c ltablib.c lutf8lib.c linit.c
解释器
库、lua.c
编译器
库、luac.c

要在自己的程序中将 Lua 用作库,你需要了解如何使用编译器创建和使用库。此外,要动态加载 Lua 的 C 库,你需要了解如何创建动态库,并且你需要确保 Lua API 函数对这些动态库可访问 — 但不要将 Lua 库链接到每个动态库中。对于 Unix,我们建议将 Lua 库静态链接到主机程序中,并导出其符号以进行动态链接;src/Makefile对 Lua 解释器执行此操作。对于 Windows,我们建议 Lua 库为 DLL。在所有情况下,编译器 luac 都应静态链接。

如上所述,你可以在构建 Lua 之前编辑 src/luaconf.h 以自定义一些特性。

Lua 5.3 之后的更改

以下是 Lua 5.4 中引入的主要更改。参考手册列出了必须引入的不兼容性

主要更改

许可证

[osi certified] Lua 是根据MIT 许可证条款分发的免费软件,该许可证已在下方复制;它可用于任何目的,包括商业目的,完全免费,无需征得我们的同意。唯一的要求是,如果您确实使用了 Lua,那么您应该在产品或其文档的某个位置包含适当的版权声明,以表示对我们的认可。有关详细信息,请参阅

版权所有 © 1994–2023 Lua.org,PUC-Rio。

特此免费授予任何获得本软件及其相关文档文件(“软件”)副本的人员处理该软件的权限,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或出售该软件副本的权利,并允许向其提供该软件的人员这样做,但须符合以下条件

所有副本或软件实质部分中都应包含上述版权声明和此许可声明。

该软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于适销性、针对特定用途的适用性和非侵权性的担保。在任何情况下,作者或版权持有者均不对因软件或因使用或以其他方式处理软件而引起的任何索赔、损害或其他责任承担责任,无论是在合同诉讼、侵权诉讼或其他诉讼中。