32位的Lua字节码可以在64位系统上运行吗?

一个编译过的 Lua 文件(32位的 *.luac 文件),能否在 64位的系统上运行?

原文链接 https://stackoverflow.com/questions/3900751

点赞
stackoverflow用户207504
stackoverflow用户207504

我没有足够的经验来支持我的话,但我相信只要使用32位lua二进制文件来运行编译后的文件,它应该可以工作。或者换句话说,使用相似设置生成的二进制文件,考虑到Lua提供了相当多的编译器选项,这些选项会影响.luac文件的输出以及其内部结构。

通常规则是不要混合使用lua可执行文件和另一个lua可执行文件创建的.luac文件,因为内部格式高度依赖于Lua二进制文件本身编译的方式。

因此,如果您使用创建.luac文件的32位Lua运行它,答案是肯定的。如果您使用64位Lua可执行文件运行它,那么答案肯定就是否定的。

2010-10-10 16:20:48
stackoverflow用户111866
stackoverflow用户111866

引用 luac man page 的话:

由 luac 创建的二进制文件只在具有相同字长和字节顺序的体系结构之间可移植。

所以答案是不行的。(我也曾在一台 32 位机器和一台 64 位机器上测试过这种情况。)你可以做的是确保你的 Lua 解释器是为 32 位编译的(即使在 64 位机器上),我相信 Lua 就能接受它。

2010-10-10 16:33:57
stackoverflow用户33252
stackoverflow用户33252

你没有说为什么要传递已编译的 Lua 文件(源代码可能更小,并且加载非常快)。无论如何,与原始源代码的替代方法是squish

2010-10-11 14:05:11
stackoverflow用户5443510
stackoverflow用户5443510

在所有32/64位系统上只使用32位字节码。

[https://github.com/c0i/lua32](https://github.com/c0i/lua32)
2018-07-14 02:42:11