【问题标题】:Compile Lua script to 32 bit bytecode on MacOS在 MacOS 上将 Lua 脚本编译为 32 位字节码
【发布时间】:2021-04-24 00:11:09
【问题描述】:

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

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

但是,使用已编译脚本的应用程序运行 32 位版本的 Lua,无法读取 64 位已编译 Lua 脚本的字节码。 (错误消息:预编译块中的错误标头)。

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

【问题讨论】:

  • 有一个bytecode converter。转换您的字节码 (L4888 -> L4488) 以将参数“C 指针大小”从 8 更改为 4
  • 或者使用 Lua 5.4 - 它的字节码不依赖于 C 指针的位数。

标签: macos lua macos-catalina luac


【解决方案1】:

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

如果这不起作用,您可以更改 ldump.c 以生成 32 位兼容代码。源代码有以下注释(5.4):All high-level dumps go through dumpVector; you can change it to change the endianness of the result。您可以通过更改DIBSdumpSize 和其他几个位置的处理来更新它以更改位数。

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 2011-04-23
    • 1970-01-01
    • 2011-11-11
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    相关资源
    最近更新 更多