Может ли 32-битный байт-код Lua работать в 64-битной системе?
Может ли скомпилированный файл Lua (32-битный *.luac-файл) работать в 64-битной системе?
4 ответа
Процитирую man-страницу luac:
Бинарные файлы, созданные luac, переносимы только среди архитектур с одинаковым размером слова и порядком байтов.
Так что ответ - нет. (Я также проверил эту точную ситуацию с 32-битной и 64-битной машинами.) Одна вещь, которую вы можете сделать, это убедиться, что ваш интерпретатор Lua скомпилирован для 32-битной (даже на 64-битной машине), и Я верю, что Луа примет это тогда.
просто используйте 32-битный байт-код во всех 32/64 битных системах.
Мне не хватает опыта для подкрепления моих слов, но я считаю, что пока 32-разрядный двоичный файл lua используется для запуска этого скомпилированного файла, он должен работать. Или, скорее, двоичный файл, созданный с аналогичными настройками, учитывая тот факт, что Lua предлагает несколько опций компилятора, которые могут повлиять на вывод .luac
файлы и их внутренняя структура.
В общем, правило не должно смешивать использование исполняемых файлов lua с .luac
файлы, созданные другим исполняемым файлом lua, поскольку внутренний формат сильно зависит от компиляции самих двоичных файлов Lua.
Так что, если вы запускаете его с 32-битным Lua, с которым вы создали файлы.luac, ответ - да. Если бы вы запускали его с 64-битным исполняемым файлом Lua, это было бы довольно определенно нет.
Вы не сказали, почему хотите доставлять скомпилированные файлы Lua (исходный код может быть меньше и загружаться довольно быстро). В любом случае, альтернативой необработанному источнику является слабость.