双启动系统上的 ocaml 设置

ocaml setup on dual-boot system

我设置了双启动的intel skylake linux 系统(Debian 8 和Manjaro 16.08)共享/home,并使用opam 配置ocaml。我发现 ocamlc 可以工作,但 ocamlopt 在其他系统上构建时会出现 'operand type mismatch' 汇编程序错误。 'opam switch reinstall' 为每个系统创建不同格式的二进制文件。 "ELF 64-bit LSB executable, x86-64" 对比 "ELF 32-bit LSB executable, Intel 80386".

我可以将 $OPAMROOT 更改为 /home 之外并维护单独的版本,但想知道我必须更改哪些系统组件才能在这些系统之间具有 ocamlopt 兼容性? Debian 目前有 gcc 4.9.2-10 和 Manjaro gcc 6.1.1.

您不能在两个不同的操作系统之间共享同一个 opam 开关,尤其是因为它们具有不同的体系结构。但是您可以创建两个不同的开关,每个操作系统一个。使用

 opam switch <os-name> -A<compiler-version>

其中 <os-version> 是您的任意名称 OS,例如 debianmanjaro<compiler-version> 是您要使用的 OCaml 编译器的版本,例如 4.034.02.3

稍后,您可以更新您的配置文件,以便在 bash 启动期间激活正确的开关,具体取决于当前的操作系统。