Может ли 32-битный байт-код Lua работать в 64-битной системе?

Может ли скомпилированный файл Lua (32-битный *.luac-файл) работать в 64-битной системе?

4 ответа

Процитирую man-страницу luac:

Бинарные файлы, созданные luac, переносимы только среди архитектур с одинаковым размером слова и порядком байтов.

Так что ответ - нет. (Я также проверил эту точную ситуацию с 32-битной и 64-битной машинами.) Одна вещь, которую вы можете сделать, это убедиться, что ваш интерпретатор Lua скомпилирован для 32-битной (даже на 64-битной машине), и Я верю, что Луа примет это тогда.

https://github.com/c0i/lua32

просто используйте 32-битный байт-код во всех 32/64 битных системах.

Мне не хватает опыта для подкрепления моих слов, но я считаю, что пока 32-разрядный двоичный файл lua используется для запуска этого скомпилированного файла, он должен работать. Или, скорее, двоичный файл, созданный с аналогичными настройками, учитывая тот факт, что Lua предлагает несколько опций компилятора, которые могут повлиять на вывод .luac файлы и их внутренняя структура.

В общем, правило не должно смешивать использование исполняемых файлов lua с .luac файлы, созданные другим исполняемым файлом lua, поскольку внутренний формат сильно зависит от компиляции самих двоичных файлов Lua.

Так что, если вы запускаете его с 32-битным Lua, с которым вы создали файлы.luac, ответ - да. Если бы вы запускали его с 64-битным исполняемым файлом Lua, это было бы довольно определенно нет.

Вы не сказали, почему хотите доставлять скомпилированные файлы Lua (исходный код может быть меньше и загружаться довольно быстро). В любом случае, альтернативой необработанному источнику является слабость.

Другие вопросы по тегам