c'è un modo per compilare Erlang come eseguibile autonomo? significa, per eseguirlo come un exe senza il runtime Erlang.Compilazione di Erlang - Erlang come eseguibile autonomo
risposta
Mentre è possibile avvolgere tutto in un singolo EXE, non si ha intenzione di evitare un runtime Erlang. I linguaggi dinamici come Erlang non possono realmente essere compilati in codice x86 nativo, ad esempio, a causa della loro natura. Deve esserci un interprete da qualche parte.
È possibile creare uno schema che raggruppa l'interprete e tutti i file BEAM in un singolo EXE, è possibile fare doppio clic ed eseguire direttamente, ma probabilmente è più lavoro di quello che si voleva fare. L'ho già visto prima, ma raramente c'è una buona ragione per farlo, quindi non mi dilungherò per approfondire le tecniche qui.
Invece, ti suggerisco di utilizzare la stessa tecnica che usano per Python Py2exe e Py2app programmi per la creazione di eseguibili Windows e Mac OS X, rispettivamente. Questi programmi caricano il modulo principale del programma in un interprete Python, individuano gli altri moduli necessari utilizzando i meccanismi di riflessione incorporati del linguaggio, quindi scrivono tutti i moduli compilati insieme a una copia dell'interprete di lingua e un piccolo programma wrapper che lancia il modulo principale del programma con l'interprete. La directory che contiene questi file è quindi un ambiente autonomo, con tutto il necessario per eseguire il programma. L'unica differenza nel caso Erlang è che python.exe diventa erl.exe e * .pyc diventa * .beam. L'idea di base è sempre la stessa.
È possibile semplificare questo se non si ha bisogno di lavorare con qualsiasi programma di Erlang arbitrario, ma solo il tuo. In tal caso, basta copiare l'interprete di Erlang e tutti i file .beam che compongono il programma in una singola directory. Puoi rendere questa parte del Makefile del tuo programma, ad esempio.
È quindi possibile utilizzare il metodo di creazione setup.exe o MSI preferito per creare un pacchetto distribuibile che installa questa raccolta di file in c:\Program Files\MyProgram
nel sistema dell'utente finale e crea un collegamento per "erl mainmodule.beam" nel menu Start . L'utente finale non si cura che come parte del programma ottengano anche una copia di Erlang. Questo è un dettaglio di implementazione.
Ho appena fatto un attacco rapido a questo, e sembra che tu possa ottenere il runtime di Erlang a meno di 2 MB. Tutto ciò di cui hai bisogno è un sottoinsieme dei file nella directory erts-VERSION/bin sotto la directory in cui hai installato Erlang. Ho ottenuto qualcosa che sembra funzionare usando solo beam.smp.dll, epmd.exe, erl.exe, erl. ini, erlexec.dll, erlsrv.exe e heart.exe. Alcuni di questi sembrano essere facoltativi. Non sono sicuro di quanto sia kosher spedire solo beam.smp.dll e non beam.dll, o viceversa; potresti davvero aver bisogno di entrambi. Questo ti porta fino a 3 MB non compressi. Piccolo, in questi giorni. –
Riak non raggruppa come un'app? – CMCDragonkai
il sito che è collegato a non supporta exes ancora – Zubair
@qwerty. Hai trovato una risposta che funziona alla fine? – Zubair