是否跨平台发布,以便我可以在一个平台上构建发布,并在另一个平台上运行它,还是应该在我将运行该应用程序的同一平台上构建?在Mac上制作Erlang应用程序版本以在Linux上运行它?
3
A
回答
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之内。如果你使用任何,你必须为你的目标平台交叉编译它们。你必须自己处理它可能
相关问题
- 1. NoClassDefFoundError在Linux上运行应用程序(但不是在Mac上)
- 2. 如何在Mac上制作应用程序自动运行?
- 3. 强制通用应用程序在iPad上运行iPhone版本
- 4. 在旧版本的操作系统上运行应用程序
- 5. 构建在内核版本X.XX上的C++ Linux应用程序是否会在早期版本上运行?
- 6. Python应用程序在Ubuntu(远程)上“杀死”,但在Mac(本地)上运行
- 7. 在Mac或Windows上运行.NET Core控制台应用程序
- 8. 在windows上运行android应用程序,在linux上开发
- 9. 任何c#应用程序都可以在linux上运行
- 10. 如何在Mac上的Redis上运行Python应用程序?
- 11. Android应用程序未在较高版本上运行
- 12. 在旧版本的.net上运行应用程序
- 13. 我想只在版本ICS上运行我的应用程序
- 14. 在开发设备上运行版本的iOS应用程序
- 15. 在Mountain Lion上运行iOS 4.3版本的应用程序
- 16. 在不同版本的iPad上运行应用程序
- 17. 在特定节点版本上运行应用程序
- 18. 在Linux机器上从Windows上运行GTK +应用程序
- 19. 应用程序崩溃IOS 5在以前版本上工作
- 20. 无法在Mac上运行二进制文件,在Linux上运行
- 21. Erlang:在[本地]版本上使用run_erl?
- 22. 在Mac OS X上显示正在运行的应用程序
- 23. nullPointerException当在Android版本较低的版本上运行应用程序
- 24. 在较新版本的Ruby上运行旧的Ruby版本化应用程序
- 25. 在Dreamweaver上更改MAC结束的MAC(以便文件在Linux上运行)
- 26. 程序挂在Linux和Windows上,似乎在Mac上工作
- 27. 在Mac上运行C#(windows)程序
- 28. 无法在mac上运行java程序
- 29. 在Mac上多次运行Java程序
- 30. 该应用程序在Windows中运行,但不在Linux上