Erlang beam文件的可移植性如何?

Erlang beam文件的可移植性如何?,erlang,beam,Erlang,Beam,我有一个临时情况,在一个节点上编译beam文件 在另一个节点上执行。beam文件是否可移植 Erlang发行版的版本需要有多接近?Beam文件可以跨节点移植,因为它们是由Erlang VM解释的字节码,与Java的工作方式相同。例外情况是,如果它们是为本机优化(+本机)编译的,在这种情况下,它们显然不是非常可移植的,除了可能在windows机器之间。(两年后编辑:同样是硬件和软件设置相同的机器,正如您在电信业使用erlang时可能发现的那样) 就版本而言,很明显,您不应该使用最旧版本不支持的功能

我有一个临时情况,在一个节点上编译beam文件 在另一个节点上执行。beam文件是否可移植


Erlang发行版的版本需要有多接近?

Beam文件可以跨节点移植,因为它们是由Erlang VM解释的字节码,与Java的工作方式相同。例外情况是,如果它们是为本机优化(+本机)编译的,在这种情况下,它们显然不是非常可移植的,除了可能在windows机器之间。(两年后编辑:同样是硬件和软件设置相同的机器,正如您在电信业使用erlang时可能发现的那样)

就版本而言,很明显,您不应该使用最旧版本不支持的功能。只要支持这些功能,即使版本差距很大,它也应该可以工作


还请注意,一些模块可能在早期版本中进行了实验,因此它们的功能可能会有稍微不同的结果。

Beam文件应该可以在节点之间相当方便地移植。如果节点运行的是不同版本的Erlang VM,那么您可能会遇到问题。需要特别注意的特性包括使用参数化模块和-extends()模块属性。如果其中一台机器正在运行通过软件包管理器(即apt)安装的VM,那么它可能是旧的。我在过去遇到过的一个模块是正则表达式模块
re

,感谢您的回答和时间。是否有路径名“硬编码”到beam文件中?仅当您在其中指定路径名时。