我在 x86 机器上用字节码编译 OCaml 程序,然后将字节码传输到 ppc64 机器。假设 ppc64 机器有 ocamlrun(为 ppc64 编译),我能在 ppc64 架构上执行我的程序吗?就这么简单吗?
换句话说,字节码是否抗字节序?
如果不是,那么字节码的目的是什么?
最佳答案
我假设您不需要任何外部功能;否则你当然需要提供它们的二进制代码。
是的,对于 Ocaml 支持的系统,字节码可以抵抗字节顺序(和字长)。
(但是,您的字节码可能取决于 ocamlrun
解释器的特定版本和程序使用的 Pervasives
模块;因此,Ocaml 4.01 的字节码可能无法在 Ocaml 4.02 运行时运行,反之亦然;YMMV)
特别是当您从 its source code 构建 Ocaml 时,它正在使用 boot/
的分布式版本(在 ocamlc
subdirectory ...)编译自己- 这是一个字节码文件。
Ocaml 的人非常需要这种可移植性,因为大多数 Ocaml 编译器都是用 Ocaml 本身编写的,并且是 bootstrapped .
另见 J.Pitrat 的博客 meta-bugs, curse of the bootstrap这间接解释了为什么要更新 boot/ocamlc
Ocaml 团队必须很少和仔细地完成文件。在 Ocaml 代码中,make bootstrap
必须偶尔非常小心地完成(至少要提交更新版本的 boot/ocamlc
字节码文件)。
关于ocaml - OCaml 字节码的可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814010/