2016-08-22 94 views

回答

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之內。如果你使用任何,你必須爲你的目標平臺交叉編譯它們。你必須自己處理它可能

相關問題