OCaml 字节码的可移植性
Portability of OCaml bytecode
我在 x86 机器上用字节码编译 OCaml 程序,然后将字节码传输到 ppc64 机器上。假设 ppc64 机器有 ocamlrun(为 ppc64 编译),我能在 ppc64 架构上执行我的程序吗?就这么简单吗?
换句话说,字节码是否具有字节序?
如果不是,那么字节码的用途是什么?
我假设您不需要任何外部函数;否则你当然需要提供它们的二进制代码。
是的,对于 Ocaml 支持的系统,字节码不受字节顺序(和字长)的影响。
(但是,您的字节码可能取决于特定版本的 ocamlrun
解释器和程序使用的 Pervasives
模块;因此,Ocaml 4.01 的字节码可能不会运行 在 Ocaml 4.02 中 运行time 或反之亦然;YMMV)
特别是当您从 its source code, it is compiling itself with a distributed version (in boot/
subdirectory 构建 Ocaml 时 ...) of ocamlc
- 这是一个字节码文件。
Ocaml 人员非常需要这种可移植性,因为大多数 Ocaml 编译器都是用 Ocaml 本身编写的,并且是 bootstrapped.
另请参阅 J.Pitrat 在 meta-bugs, curse of the bootstrap 上的博客,它间接解释了为什么更新 boot/ocamlc
文件必须由 Ocaml 团队很少且小心地完成。在 Ocaml 代码中,make bootstrap
必须偶尔且非常小心地完成(至少要提交更新版本的 boot/ocamlc
字节码文件)。
我在 x86 机器上用字节码编译 OCaml 程序,然后将字节码传输到 ppc64 机器上。假设 ppc64 机器有 ocamlrun(为 ppc64 编译),我能在 ppc64 架构上执行我的程序吗?就这么简单吗?
换句话说,字节码是否具有字节序?
如果不是,那么字节码的用途是什么?
我假设您不需要任何外部函数;否则你当然需要提供它们的二进制代码。
是的,对于 Ocaml 支持的系统,字节码不受字节顺序(和字长)的影响。
(但是,您的字节码可能取决于特定版本的 ocamlrun
解释器和程序使用的 Pervasives
模块;因此,Ocaml 4.01 的字节码可能不会运行 在 Ocaml 4.02 中 运行time 或反之亦然;YMMV)
特别是当您从 its source code, it is compiling itself with a distributed version (in boot/
subdirectory 构建 Ocaml 时 ...) of ocamlc
- 这是一个字节码文件。
Ocaml 人员非常需要这种可移植性,因为大多数 Ocaml 编译器都是用 Ocaml 本身编写的,并且是 bootstrapped.
另请参阅 J.Pitrat 在 meta-bugs, curse of the bootstrap 上的博客,它间接解释了为什么更新 boot/ocamlc
文件必须由 Ocaml 团队很少且小心地完成。在 Ocaml 代码中,make bootstrap
必须偶尔且非常小心地完成(至少要提交更新版本的 boot/ocamlc
字节码文件)。