在Mac上制作Erlang应用程序版本以在Linux上运行它?

时间:2016-08-22 14:52:01

标签: erlang

是否跨平台发布,以便我可以在一个平台上构建一个版本,并在另一个平台上运行它,或者我应该在我将运行该应用程序的同一平台上构建?

2 个答案:

答案 0 :(得分:2)

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

虽然Erlang beams是跨平台的,但发行版通常包含可依赖于平台的其他数据。

  • Erts本身。
  • 平台相关库

如果你想在Mac上为Linux构建版本,你至少需要为Linux构建Erts。例如,如果您使用relx,则必须{/ 3}}

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

其他与平台相关的库是另一回事。几乎每个复杂的Erlang应用程序都使用一些NIF或端口,这些NIF或端口通常都带有版本并位于priv中。如果您使用any,则必须为目标平台交叉编译它们。你可能需要自己处理它

答案 1 :(得分:0)

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

对于具有不同版本的平台,它向后兼容2个主要版本。意味着如果您在带有R16B的OS X计算机上发布,它应该与运行OTP 17和18的任何计算机兼容。Source

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