OCaml字节码的可移植性

OCaml字节码的可移植性,ocaml,bytecode,endianness,Ocaml,Bytecode,Endianness,我在x86机器上用字节码编译OCaml程序,并将字节码传输到ppc64机器。假设ppc64机器已运行ocamlrun(为ppc64编译),我是否能够在ppc64体系结构上执行我的程序?有那么简单吗 换言之,字节码是否能抵抗endianness 如果没有,那么字节码的用途是什么?我假设您不需要任何外部函数;否则,您当然需要提供它们的二进制代码 是的,对于Ocaml支持的系统,字节码可以抵抗endianness(和字大小) (但是,您的字节码可能取决于您的程序使用的ocamlrun解释器的特定版本和

我在x86机器上用字节码编译OCaml程序,并将字节码传输到ppc64机器。假设ppc64机器已运行ocamlrun(为ppc64编译),我是否能够在ppc64体系结构上执行我的程序?有那么简单吗

换言之,字节码是否能抵抗endianness


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

我假设您不需要任何外部函数;否则,您当然需要提供它们的二进制代码

是的,对于Ocaml支持的系统,字节码可以抵抗endianness(和字大小)

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

特别是当您从构建Ocaml时,它使用
ocamlc
的分布式版本(In…)编译自己,这是一个字节码文件

Ocaml的人们迫切需要这种可移植性,因为大部分Ocaml编译器都是用Ocaml本身编写的,并且是可移植的

另请参见J.Pitrat的博客,其中间接解释了为什么Ocaml团队必须很少且谨慎地更新
boot/ocamlc
文件。在Ocaml代码中,必须偶尔非常小心地执行
make bootstrap
(至少要提交较新版本的
boot/ocamlc
字节码文件)