OCaml字节码的可移植性

Ant*_*ama 4 ocaml bytecode endianness

我在x86机器上用字节码编译OCaml程序,并将字节码传送到ppc64机器.假设ppc64机器有ocamlrun(编译为ppc64),我能在ppc64架构上执行我的程序吗?这么简单吗?

换句话说,字节码是否对字节序有抵抗力?

如果没有,那么字节码的目的是什么?

Bas*_*tch 8

我假设你不需要任何外部功能; 当然,你需要提供它们的二进制代码.

是的,对于Ocaml支持的系统,字节码对字节序(以及字大小)有抵抗力.

(但是,您的字节码可能取决于ocamlrun解释器的特定版本和Pervasives程序使用的模块;因此,Ocaml 4.01的字节码可能无法在Ocaml 4.02运行时运行,反之亦然; YMMV)

尤其是当你从构建Ocaml程序编写它的源代码,它与分布式版本编译本身(boot/子目录 ...)的ocamlc-这是一个字节码文件.

Ocaml人非常需要这种可移植性,因为大多数Ocaml编译器都是用Ocaml本身编写的并且是自举的.

另见J.Pitrat关于元错误的博客,引导程序的诅咒,间接解释了为什么boot/ocamlcOcaml团队很少和小心地更新该文件的原因.在Ocaml代码中,make bootstrap必须偶尔并非常小心地完成(至少提交更新版本的boot/ocamlc字节码文件).