有没有办法将Erlang编译为独立的可执行文件? 这意味着,在没有Erlang运行时的情况下将其作为exe运行。
答案 0 :(得分:15)
虽然可以在一个EXE中包装所有内容,但您不会放弃使用Erlang运行时。例如,Erlang等动态语言无法真正编译为本机x86代码,因为它们的性质。那里必须有一名翻译。
有可能提出一种方案,将解释器和所有BEAM文件捆绑到一个EXE中,您可以双击并直接运行,但这可能比您想要的更多。我以前见过它,但很少有理由这样做,所以我不打算详细介绍这些技术。
相反,我建议您使用与Python的py2exe和py2app程序相同的技术来分别创建Windows和Mac OS X可执行文件。这些程序将程序的主模块加载到Python解释器中,使用语言的内置反射机制找出它需要的其他模块,然后写出所有这些编译的模块以及语言解释器的副本和一个小的包装器程序。用解释器启动程序的主模块。然后,包含这些文件的目录是一个独立的环境,具有运行程序所需的一切。 Erlang案例的唯一区别是python.exe变为erl.exe,* .pyc变为* .beam。基本思路仍然相同。
如果您不需要它可以使用任何任意Erlang程序,您可以简化此操作,但只能使用它。在这种情况下,您只需将Erlang解释器和组成程序的所有.beam文件复制到一个目录中。例如,您可以将程序的Makefile作为此部分。
然后,您可以使用自己喜欢的setup.exe或MSI创建方法创建可分发程序包,以便在最终用户的系统上将此文件集合安装到c:\Program Files\MyProgram
,并为“erl mainmodule.beam”创建快捷方式。他们的开始菜单。最终用户并不关心作为程序的一部分,他们也获得了Erlang的副本。这是一个实现细节。
答案 1 :(得分:0)
您可以使用Warp。我添加了包装Erlang版本的示例。