169 похожих чатов

Приветствую, подскажите можно ли скомпилировать луа скрипт в бинарный файл

который можно будет исполнять без луа интерпретатора?

14 ответов

32 просмотра

Можно скомпилировать луа-интерпретатор с вшитым скриптом, который он будет выполнять.

Создаешь байт-код из скрипта, преобразуешь его в массивчик внутри h файла и подключаешь к сишной проге своей, которая подгружает и инициализирует Lua машинку, которой потом через loadbuffer скармливаешь полученный массивчик

Можно 1) держать строку со скриптом и запустить свой интерпретатор для единственного сценария 2) Можно таскать байт-код 3) Можно написать сценарий на Си. Без интерпретатора буквально не получится, по сути каждый способ по своему таскает интерпретатор, т.к. луа - интерпретируемый язык, но насколько я понял вы не совсем в этом разбираетесь и под интерпретатором подразумеваете лишь интерактивную строку, без которой интерпретатор луа может работать, т.к. сам интерпретатор занимается только обработкой исходников на луа и их выполнением.

а что ты вообще хочешь сделать по итогу?

Drus- Автор вопроса
UtoECat
а что ты вообще хочешь сделать по итогу?

Хочу запускать lua скрипт в виде бинарника на любой системе

Drus
Хочу запускать lua скрипт в виде бинарника на любо...

скрипт одним файлом только? и плагнируется ли потом добавление нескольких файлов?

Drus
Хочу запускать lua скрипт в виде бинарника на любо...

Напиши ма-а-аленькую программку на сишечке, которая будет искать файлик main.lua рядом с собой и запускать. Получишь возможность редактировать.

Drus
Хочу запускать lua скрипт в виде бинарника на любо...

что ты подразумеваешь под "на любой системе"?

вообще да, лучше просто раннер скрипта сделать, чем потом заниматься перекомпиляцией. + если захочешь добавить дополнительные скрипты и файлы не надо будет мучаться со всякими vfs, путь даже в виде архива. У меня так-то есть применение подобного, но часть vfs запилена в один проект, для хранения ассетов в бинаре, а луашка сама только лишь немного участвует в процессе сборки архива, не более. Да и код под gpl, это наврятли будет то, что ты хочешь 😁 И да кстати, повторюсь, что ты хочешь сделать-то? Я понял, что ты хочешь упаковать скрипт, а что это за скрипт и почему его надо упаковывать?

Luсky Ook 💉4
Винлокер запускать на системе без lua.

тьфу, я на секунду подумал, что это автор сообщеня написал 😂

Drus
Хочу запускать lua скрипт в виде бинарника на любо...

хз чего ты молчишь... Крч, вот тебе пример того, что предложил снус : раннер, который выполняет скрипт main.lua, лежащий рядом с exeшником. Бинарь прилагается, однако крайне рекомендую скомпилировать самостоятельно, запускать бинарники от посторонних людей - такое себе 😁 за тем как скомпилировать - обращайся к документации своего си компилятора (если таковой есть). луашка используется minilua(упакованные исходники оригинальные в один заголовочный файл си кода), поэтому никаких библиотек дополнительно линковать не надо. Версия lua - 5.4.4 (P.S: тебе же под винду надо, да? в любом случае, под другие системы раннер тоже компилируется нормально P.P.S: компилятор TCC не бери для этого, не надо, я проверил, оно весьма медленно выходит 😁)

Drus- Автор вопроса
UtoECat
хз чего ты молчишь... Крч, вот тебе пример того, ...

😁😁😁, спасибо большое, мне это надо просто чтобы убедится, что если мне надо будет исполнить скрипт луа на другом пк с голой ОС, я смогу это сделать без установки дополнительных либ, типа просто перекинул бинарь, выполнил и он отработал без проблем.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта