2016-08-22 54 views

回答

0

假设那些平台具有相同的OTP版本:是的.beam文件应该跨平台兼容,因为它是解释字节码的Erlang VM。就像.class文件和JVM一样。

对于不同版本的平台,它向后兼容2个主要版本。意思是如果你在R16B的OS X机器上发布版本,它应该与任何运行OTP 17和18的机器兼容。Source

这两种情况都不适用于编译的本机代码或NIF。

2

发布机制至少需要额外的工作来进行,以使其跨平台

虽然二郎beams是跨平台,版本通常包含额外的数据,可以是依赖于平台。

这是

  • 厄茨本身。
  • 平台依赖库

如果你想在苹果建立的Linux发行版,你至少需要厄茨建立的Linux版本。如果你正在使用relx,例如,你必须specify它与

{include_erts, "/path/to/erlang"}, 
{system_libs, "/path/to/erlang"}, 

其他平台相关的库是一个不同的故事。几乎每个复杂的Erlang应用程序都使用一些NIF或端口,这些NIF或端口通常会随发行版一起提供,并且位于priv s之内。如果你使用任何,你必须为你的目标平台交叉编译它们。你必须自己处理它可能

相关问题