我在x86機器上的字節碼中編譯OCaml程序,並將字節碼傳輸到ppc64機器。假設ppc64機器具有ocamlrun(爲ppc64編譯),我將能夠在ppc64架構上執行我的程序嗎?這很簡單嗎?OCaml字節碼的可移植性
換句話說,字節碼是否有抵抗性?
如果沒有,那麼字節碼的目的是什麼?
我在x86機器上的字節碼中編譯OCaml程序,並將字節碼傳輸到ppc64機器。假設ppc64機器具有ocamlrun(爲ppc64編譯),我將能夠在ppc64架構上執行我的程序嗎?這很簡單嗎?OCaml字節碼的可移植性
換句話說,字節碼是否有抵抗性?
如果沒有,那麼字節碼的目的是什麼?
我假設你不需要任何外部函數;否則當然你需要提供它們的二進制代碼。
是的,對於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
字節碼文件)。