编译器文档(luac.html):
---------------------------------------------------------
名字
luac - Lua 编译器
概要
luac [ options ] [ filenames ]
描述
luac 是 Lua 编译器。它将由 Lua 编程语言写成的程序翻译成二进制文件。
通过在 C 语言中调用 lua_dofile 或在 Lua 中调用 dofile 可以加载和执行这个生成的二进制文件。
预编译块的主要优点是:更快速的加载,防止源代码被用户修改,和离线的错误检测。
预编译并不意味着更快的执行速度,因为 Lua 的块在执行前总是会被编译成字节码。luac 只是能让这些字节码保存到文件中供以后执行使用。
luac 生成一个输出文件,其中包含的所有指定源文件的字节码。
默认情况下, 输出文件的名字为 luac.out。
但你可以使用 -o 选项去改变它。
由 luac 生成的二进制文件在所有的有相同字长的体系结构上是可移植的。这意味着一个在 32 位平台(例如 Intel)上生成的二进制文件可以被另一个 32 位平台(例如 Sparc)读取而无需修改,即使字节序不一样(大小端)。另一方面,在 16 位平台上生成的二进制文件不可以在 32 位平台上读取。
在命令行中,你可以混合包含 Lua 源代码的文本文件和包含预编译块的二进制文件。这就使得我们可以合并几个预编译的块为一个预编译的块,甚至从不同的(但兼容)平台。
你可以使用 “-” 来表明将标准输入作为源文件。
当有新版本发布,由 luac 生成的二进制文件的内部格式可能会发生改变。我们尝试去维护二进制文件的兼容性,但它并非总能奏效。所以,保存所有你预编译的 Lua 程序的源文件吧。
选项
选项必须是分开的。
-l 选项生成编译后的 Lua 虚拟机的字节码清单。列出字节码有助于学习 Lua 的虚拟机。如果没有给出文件,luac 加载 luac.out 并列出他的内容。
-o 输出到文件 "file",替代默认的 luac.out。输出文件可以是一个源文件因为所有的文件在写输出文件之前已经被加载。
-p 加载文件但是不产生任何输出。主要用来做语法检查或测试预编译的块,损坏的文件在加载时可能生成错误。使用 -t 做一个完整的测试。
-s 在写输出文件之前剥离调试信息。这样可以在非常大的块中节省一些空间,但如果在运行这些块时发生错误,错误信息可能不包含通常的完整信息。
-t 在预编译块上执行完整性测试块。通过这个测试的代码是完全安全的,在某种意义上,它不会打破解释器。然而,这样的代码是否有意义却并没有保证(没有人可以保证,因为停机问题是无解的。)。如果没有指定文件,luac 加载 luac.out 并测试其内容。
-v 输出版本信息。
文件
luac.out 默认输出文件.
另请参阅
lua(1)
http://www.tecgraf.puc-rio.br/lua/
诊断
错误消息应该是自描述的。
作者
L. H. de Figueiredo, R. Ierusalimschy and W. Celes ([email protected])
----------------------------------------
luac 的 readme 自述文件
这是luac,Lua 的编译器。
它的帮助手册有 nroff 和 . . / . . / doc 目录中的 html 文件。
luac 将 Lua 程序翻译成二进制文件。
通过在 C 语言中调用 lua_dofile 或在 Lua 中调用 dofile 可以加载和执行这个生成的二进制文件。
预编译块的主要优点是:更快速的加载,防止源代码被用户修改,和离线的错误检测。
luac 也可以用来了解 Lua 的虚拟机。
这里列出一些 luac 可识别的选项:
- 执行标准输入
-l 列表
-o file 输出 file (默认是 "luac.out")
-p 只做解析
-s 剥离调试信息
-t 测试代码完整性
-v 显示版本信息
luac 也是一个如何(得体得)使用 Lua 内部构件的例子。
最后,luac 不需要运行时代码,stubs.c 确保它不被链接到 luac。这个文件还显示了如何避免链接解析器。