2016-01-15 55 views
4

我在x86機器上的字節碼中編譯OCaml程序,並將字節碼傳輸到ppc64機器。假設ppc64機器具有ocamlrun(爲ppc64編譯),我將能夠在ppc64架構上執行我的程序嗎?這很簡單嗎?OCaml字節碼的可移植性

換句話說,字節碼是否有抵抗性?

如果沒有,那麼字節碼的目的是什麼?

回答

8

我假設你不需要任何外部函數;否則當然你需要提供它們的二進制代碼。

是的,對於Ocaml支持的系統,字節碼對字節序列(以及字大小)有抵抗力。

(然而,你的字節碼可以取決於ocamlrun解釋程序的特定版本和程序中使用的Pervasives模塊;因此,對於ocaml的4.01字節碼可能不OCaml中運行4.02運行時或反之亦然; YMMV)

特別是當您從its source code構建Ocaml時,它正在編譯自己的分佈式版本(boot/ subdirectory ...)ocamlc - 這是一個字節碼文件。

而Ocaml人很需要這種可移植性,因爲大部分Ocaml編譯器都是用Ocaml自己編寫的,並且是bootstrapped

另請參閱J.Pitrat的博客meta-bugs, curse of the bootstrap,這間接解釋了爲什麼更新該文件必須由Ocaml團隊很少和小心地完成。在Ocaml代碼中,make bootstrap必須偶爾和非常仔細地完成(至少要提交一個更新版本的boot/ocamlc字節碼文件)。