有没有办法把Erlang编译成独立的可执行文件?这意味着,在没有Erlang运行时的情况下,将其作为exe运行。
发布于 2009-11-26 00:43:48
虽然可以将所有内容包装在单个EXE中,但您无法摆脱Erlang运行时。例如,像Erlang这样的动态语言不能真正编译成原生x86代码,因为它们的本质。一定有个翻译在里面某个地方。
可以想出一个方案,将解释器和所有BEAM文件捆绑到单个EXE中,您可以双击并直接运行,但这可能比您希望的工作更多。我以前见过这样做,但很少有很好的理由这样做,所以我不会费心在这里详细介绍这些技术。
相反,我建议您使用与Python的py2exe和py2app程序相同的技术来分别创建Windows和Mac可执行文件。这些程序将程序的主模块加载到Python解释器中,使用该语言的内置反射机制找出它需要的其他模块,然后写出所有这些已编译的模块以及语言解释器的副本和一个小包装程序,该程序使用解释器启动程序的主模块。包含这些文件的目录就是一个独立的环境,其中包含运行程序所需的所有内容。在Erlang中,唯一的区别是python.exe变成了erl.exe,*.pyc变成了*.beam。基本的想法仍然是一样的。
如果您不需要它来处理任何Erlang程序,而只需要您自己的程序,那么您可以简化它。在这种情况下,只需将Erlang解释器和组成程序的所有.beam文件复制到一个目录中。例如,您可以将这一部分作为程序的Makefile的一部分。
然后,您可以使用自己喜欢的setup.exe或MSI创建方法来创建可分发的软件包,该软件包将此文件集合安装到最终用户系统上的c:\Program Files\MyProgram
中,并在最终用户的开始菜单中创建"erl mainmodule.beam“的快捷方式。最终用户并不关心作为程序的一部分,他们是否还会得到一份Erlang副本。这是一个实现细节。
发布于 2019-06-03 00:12:26
您可以使用Warp。我添加了包装Erlang发行版的示例。
https://stackoverflow.com/questions/1795628
复制相似问题