发布是跨平台的吗?这样我就可以在一个平台上构建一个发布,然后像在另一个平台上一样运行它,或者我应该在运行应用程序的同一个平台上构建?
发布于 2016-08-23 02:27:20
发布机制至少需要做额外的工作才能使其跨平台
虽然Erlang beams是跨平台的,但发布版本通常包含与平台相关的附加数据。
它是
itself.
如果您想在Mac上为Linux构建发行版,那么您至少需要为Linux构建Erts。例如,如果您使用的是relx,则必须使用specify命令
{include_erts, "/path/to/erlang"},
{system_libs, "/path/to/erlang"},其他依赖于平台的库则是另一回事。几乎每个复杂的priv应用程序都使用一些NIF或端口,它们通常是随附在NIF中的,如果你使用它们,你必须为你的目标平台交叉编译它们。你可能得自己处理了
发布于 2016-08-23 01:11:43
假设这些平台具有相同的动态口令版本:是的,.beam文件应该跨平台兼容,因为它是解释字节码的Erlang VM。就像.class文件和JVM一样。
对于不同版本的平台,它向后兼容两个主要版本。意味着如果你在装有R16B的OS X机器上发布了一个版本,那么它应该与任何运行OTP17和18的机器兼容。Source
然而,这两种情况都不适用于编译后的本机代码或NIF。
https://stackoverflow.com/questions/39082661
复制相似问题