我有一个临时情况,梁文件在一个节点上编译 在另一个节点上执行。光束文件是否可移植?
Erlang发行版的版本有多接近?
答案 0 :(得分:10)
Beam文件可跨节点移植,因为它们是由Erlang VM解释的字节码,与Java的工作方式相同。例外情况是它们是为原生优化(+ native)编译的,在这种情况下,它们显然不是非常便携,除了可能在Windows机器之间。 (两年后编辑:也有相同硬件和软件设置的机器,就像电信使用erlang时可能会发现的那样)
版本明智,显然您不应该使用最旧版本不支持的功能。只要支持这些功能,即使版本差距很大,它也应该有效。
另请注意,某些模块可能在早期版本中已经过试验,因此它们的功能可能会略有不同。
答案 1 :(得分:7)
Beam文件应该在节点之间相当可移植。如果节点运行不同版本的Erlang VM,那么您可能会遇到麻烦。要特别警惕的功能包括使用参数化模块和-extends()模块属性。如果其中一台机器正在运行通过软件包管理器(即apt)安装的VM,那么它可能已经过时了。我过去遇到过困难的一个模块是正则表达式模块re
。