Creazione di eseguibili Lua standalone

C’è un modo semplice per creare file .exe autonomi dagli script Lua? Fondamentalmente ciò implicherebbe il collegamento dell’interprete Lua e degli script.

Credo che sia ansible (PLT Scheme consente la creazione di eseguibili standalone nello stesso modo), ma come, esattamente?

Controlla su srlua . Fa quello che ti serve.

È di uno degli autori di Lua. Su questo indirizzo ci sono anche i binari di Windows precompilati, quindi sarebbe ancora più facile per voi, penso.

Per rendere eseguibile da script utilizzare l’utilità bin2c in questo modo:

 luac script.lua -o script.luac bin2c script.luac > code.c 

Quindi crea nel file di testo dell’editor main.c e compila / linkalo con il tuo compilatore preferito. Questo è tutto. (Nota: l’eseguibile supporta anche gli argomenti della riga di comando)

Esempio con MSVC:

 cl /I "./" /I "$(LUA_DIR)\include" /D "_CRT_SECURE_NO_DEPRECATE" /D "_MBCS" /GF /FD /EHsc /MD /Gy /TC /c main.c ld /SUBSYSTEM:CONSOLE /RELEASE /ENTRY:"mainCRTStartup" /MACHINE:X86 /MANIFEST $(LUA_DIR)\lib\lua5.1.lib main.obj /out:script.exe mt -manifest $script.manifest -outputresource:script.exe;1 

Utilizzare / SUBSYSTEM: WINDOWS per l’eseguibile della GUI. Tutto ciò non è facile solo per la prima volta, è ansible creare un file batch per automatizzare il processo una volta provato con successo.

main.c:

 #include  #include  #include "lua.h" #include "lauxlib.h" #include "lualib.h" int main(int argc, char *argv[]) { int i; lua_State *L = luaL_newstate(); luaL_openlibs(L); lua_newtable(L); for (i = 0; i < argc; i++) { lua_pushnumber(L, i); lua_pushstring(L, argv[i]); lua_rawset(L, -3); } lua_setglobal(L, "arg"); #include "code.c" lua_close(L); return 0; } 

Oltre ai suggerimenti sopra riportati, puoi dare un’occhiata a L-Bia .

Può rendere eseguibili standalone compresi gli script lua e le librerie dinamiche necessarie.

Dal momento che dici “.exe” presumo che tu stia cercando una soluzione Windows. Un’idea è di aggiungere gli script a un eseguibile di interprete precostruito. Potrebbe non essere qualificato come “facile” nel tuo libro.

L’interprete deve essere in grado di leggere se stesso, analizzare la sua intestazione per determinare dove finiscono i normali dati .exe (cioè dove inizia lo script) e poi consegnare il resto del file a Lua.

Altre soluzioni non richiedono che l’interprete lavori sodo ma richiedono un collegamento più impegnativo, mentre con questo metodo, l’esecuzione di uno script può essere semplice come

 copy interpreter.exe+script.lua script.exe 

Poiché questo argomento ha un interesse un po ‘”perpetuo” e le possibili risposte sono “fluide” nel senso che potrebbero emergere nuove soluzioni (mentre quelle più vecchie potrebbero diventare obsolete), ecco un’altra possibilità (per Windows) e le dipendenze di origine Lua pure.

Link: Utility della console di Windows per convertire in un unico passaggio un sorgente Lua con le sue dipendenze di origine Lua in un file C pronto per la compilazione.

Nota: eccetto dove ci sono differenze nel bytecode per le altre piattaforms, il codice C risultante dovrebbe essere in grado di compilare su qualsiasi piattaforma che possa compilare sorgenti Lua e creare binari nativi indipendenti delle applicazioni Lua.