Lua: скомпилировать скрипт со всеми зависимостями

Есть ли способ скомпилировать скрипт, в котором все, кроме стандартных библиотек Lua, линкуется статически?

Я встраиваю скрипт в свою программу на C, функциональность разделена между модулями, которые затем загружаются в основной модуль. Я хотел бы скомпилировать основной модуль в байт-код Lua, преобразовать его в шестнадцатеричный код, чтобы его можно было легко сохранить в моей программе. Проблема в том, что основной модуль по-прежнему требует, чтобы исходный код других модулей присутствовал либо в LUA_PATH, либо в текущем каталоге. Есть ли способ переопределить это поведение? Конечно, я мог бы просто объединить все файлы (автоматически, во время компиляции) в один исходный файл lua, но, поскольку я начинаю с Lua, я хотел бы знать, есть ли какие-то другие решения этой проблемы, и, возможно, расширить свой кругозор. .

Я смотрел на luac и luajit, но не мог заставить их делать то, что мне нужно.

Любые подсказки?


person antagon    schedule 03.03.2016    source источник


Ответы (2)


Существуют такие инструменты, как srlua, которые могут помочь. Вы также можете проверить эту презентацию на luawrap и это обсуждение для идей.

person Paul Kulchenko    schedule 03.03.2016
comment
matthewwild.co.uk/projects/squish/home Также стоит поискать в. Спасибо за ваш вклад. - person antagon; 03.03.2016

сериализовать lua_state

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

Это может быть сериализовано в форму lua, а затем скомпилировано в luac. Вам придется игнорировать C связанные функции и пользовательские данные.

Вам нужно будет ходить по мета-таблицам.

инкапсулированная форма

Изменив загрузчик, вы можете иметь один ресурс, который имеет каждый из файлов lua по имени и обрабатывает запросы на загрузку как поиск и чтение в ресурсе.

person mksteve    schedule 03.03.2016