Pytanie Kompilacja Erlanga - Erlang jako samodzielny wykonalny


czy istnieje sposób na skompilowanie Erlanga, aby był samodzielnym plikiem wykonywalnym? oznacza to, aby uruchomić go jako exe bez środowiska wykonawczego Erlang.


24
2017-11-25 09:13


pochodzenie


Witryna, do której prowadzi link, jeszcze nie obsługuje plików EXE - Zubair
@qwerty. Czy znalazłeś odpowiedź, która działa na końcu? - Zubair


Odpowiedzi:


O ile możliwe jest zawijanie wszystkiego w jednym pliku EXE, nie pozbędziesz się środowiska wykonawczego Erlang. Języki dynamiczne, takie jak Erlang, naprawdę nie mogą być skompilowane do natywnego kodu x86, na przykład ze względu na ich naturę. Gdzieś tam musi być tłumacz.

Możliwe jest wymyślenie schematu, który łączy interpreter i wszystkie pliki BEAM w pojedynczy plik EXE, który można kliknąć dwukrotnie i uruchomić bezpośrednio, ale to prawdopodobnie więcej pracy, niż chcieliśmy przejść. Widziałem to już wcześniej, ale rzadko jest dobry powód, żeby to zrobić, więc nie będę zawracał sobie głowy szczegółowymi technikami tutaj.

Zamiast tego proponuję użyć tej samej techniki, której używają w programach py2exe i Py2app w Pythonie do tworzenia odpowiednio plików wykonywalnych Windows i Mac OS X. Programy te ładują główny moduł programu do interpretera Pythona, sprawdzają, jakie inne moduły potrzebuje, korzystając z wbudowanych mechanizmów odbicia języka, a następnie wypisują wszystkie skompilowane moduły wraz z kopią tłumacza językowego i małym programem otoki, uruchamia główny moduł programu za pomocą interpretera. Katalog zawierający te pliki jest wtedy autonomicznym środowiskiem, mającym wszystko, co jest potrzebne do uruchomienia programu. Jedyna różnica w przypadku Erlanga polega na tym, że python.exe staje się erl.exe, a * .pyc staje się * .beam. Podstawowa idea jest wciąż taka sama.

Możesz to uprościć, jeśli nie potrzebujesz go do pracy z dowolnym programem Erlang, ale tylko twoim. W takim przypadku wystarczy skopiować interpreter Erlanga i wszystkie pliki .beam, które składają się na program, do jednego katalogu. Możesz na przykład utworzyć część pliku Makefile twojego programu.

Następnie można użyć ulubionej metody tworzenia pliku setup.exe lub MSI w celu utworzenia pakietu dystrybucyjnego, który instaluje tę kolekcję plików c:\Program Files\MyProgram w systemie użytkownika końcowego i tworzy skrót dla "erl mainmodule.beam" w ich menu Start. Użytkownik końcowy nie dba o to, aby w ramach programu otrzymać kopię Erlanga. To jest szczegół implementacji.


15
2017-11-25 16:43



Zrobiłem szybki atak na to i wygląda na to, że możesz zmusić środowisko wykonawcze Erlang do mniej niż 2 MB. Wszystko, czego potrzebujesz, to podzbiór plików w katalogu erts-VERSION / bin pod katalogiem, w którym zainstalowałeś Erlanga. Dostałem coś, co wydaje się działać tylko z użyciem beam.smp.dll, epmd.exe, erl.exe, erl. ini, erlexec.dll, erlsrv.exe i heart.exe. Niektóre z nich wydają się być opcjonalne. Nie jestem pewien, jak koszerne jest wysyłanie tylko pliku beam.smp.dll, a nie beam.dll, i na odwrót; możesz naprawdę potrzebować obu. To spowoduje brak kompresji do 3 MB. Małe, te dni. - Warren Young
Czy Riak nie pakuje się jako aplikacja? - CMCDragonkai