ocaml - OCaml 字节码的可移植性

标签 ocaml bytecode endianness

我在 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/

相关文章:

c - 实际应用中的端依赖代码?

.net - 在 .NET 中反转字节顺序

c - 尝试在十六进制输入中使用小端和大端

data-structures - 用于在 OCaml 中频繁重新安排队列的快速功能数据结构

java - JVM 字节码访问修饰符标志 0x1000(十六进制) "synthetic"何时设置?

java - 编译asm字节码

php - 如何查看php字节码文件

expression - 奥卡姆 : multiply expression (*) int int -> int

通过 Opam 安装的 Ocamlbuild 和软件包

ocaml - 如何静默加载顶层模块