是否跨平臺發佈,以便我可以在一個平臺上構建發佈,並在另一個平臺上運行它,還是應該在我將運行該應用程序的同一平臺上構建?在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上