在Mac上发布Erlang应用程序以在Linux上运行?
是跨平台发布的,因此我可以在一个平台上构建发布,然后在另一个平台上运行它,或者我应该在运行应用程序的同一个平台上构建它?前提是这些平台具有相同的OTP版本:是在Mac上发布Erlang应用程序以在Linux上运行?,erlang,Erlang,是跨平台发布的,因此我可以在一个平台上构建发布,然后在另一个平台上运行它,或者我应该在运行应用程序的同一个平台上构建它?前提是这些平台具有相同的OTP版本:是。beam文件应该跨平台兼容,因为它是解释字节码的Erlang VM。就像.class文件和JVM一样 对于不同版本的平台,它向后兼容2个主要版本。也就是说,如果您在使用R16B的OSX机器上发布,它应该与运行OTP17和18的任何机器兼容 然而,这两种情况都不适用于编译的本机代码或NIF。发布机制至少需要额外的工作才能使其跨平台 虽然Er
。beam
文件应该跨平台兼容,因为它是解释字节码的Erlang VM。就像.class
文件和JVM一样
对于不同版本的平台,它向后兼容2个主要版本。也就是说,如果您在使用R16B的OSX机器上发布,它应该与运行OTP17和18的任何机器兼容
然而,这两种情况都不适用于编译的本机代码或NIF。发布机制至少需要额外的工作才能使其跨平台 虽然Erlang
beams
是跨平台的,但发布版通常包含可能依赖于平台的附加数据
是的
- Erts本身
- 依赖平台的库
relx
,则必须使用它
其他依赖于平台的库则是另一回事。几乎每一个复杂的Erlang应用程序都使用一些NIF或端口,它们通常随发布而来,并位于priv
s中。如果您使用任何一个,您必须为您的目标平台交叉编译它们。你可能得自己处理
{include_erts, "/path/to/erlang"},
{system_libs, "/path/to/erlang"},