是否跨平台发布,以便我可以在一个平台上构建一个版本,并在另一个平台上运行它,或者我应该在我将运行该应用程序的同一平台上构建?
答案 0 :(得分:2)
发布机制至少需要进行额外的工作才能使其跨平台
虽然Erlang beams
是跨平台的,但发行版通常包含可依赖于平台的其他数据。
是
如果你想在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。