有没有一种方法可以将Erlang编译为独立的可执行文件?也就是说,运行它时无需Erlang运行时。
有没有一种方法可以将Erlang编译为独立的可执行文件?也就是说,运行它时无需Erlang运行时。
尽管可以将所有内容打包为单个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的副本,这只是一个实现细节。