在 MacOS 上将 Lua 脚本编译为 32 位字节码

我正在 MacOS Catalina 上将 Lua 脚本编译为二进制文件。

luac -s -o bin/my-binary.luac src/my-code.lua"

然而,使用编译后的脚本的应用程序运行的是 32 位版本的 Lua,并且无法读取 64 位编译的 Lua 脚本的字节码。(错误信息:预编译块中有坏头)。

我是否可以在当前 MacOS 上以某种方式(交叉)编译 Lua 脚本为 32 位二进制文件? 我的替代方案是使用 Docker 进行编译,但是也许有更简单的方法。

点赞
用户1442917
用户1442917

我没有看到任何交叉编译或更改位数的选项,但您可能可以调整 Lua 代码以生成所需的代码。这是 Lua 5.1 的 邮件列表线程,建议使用 #define LUAC_STR_SIZE_TYPE int

如果这样不起作用,您可以尝试更改 ldump.c 以生成32位兼容代码。源代码有以下注释(5.4):所有高级转储都通过dumpVector进行;更改它可以更改结果的字节顺序。您可以更新它以通过更改对 DIBSdumpSize 和其他几个位置的处理来更改位数。

2021-01-19 17:57:19