这是一个简单的 ocaml 文件,只是为了让我了解如何将使用电池库的程序加载到 ocamltop 中。
电池突击.ml
open Batteries
let main = print_string "hello, world ... powered on"
我将其编译为字节码
ocamlfind ocamlc -package batteries -linkpkg batteryassault.ml
产生了batteryassault.cmo 和batteryassault.cmi,没有错误也没有警告。然后,我启动电池供电的 ocamltop
rlwrap ocamlfind batteries/ocaml
最后,在 ocamltop 中加载文件:
#load "batteryassault.cmo" ;;
然后我们得到一个错误。
文件 batteryassault.cmo 和 /usr/lib/ocaml/batteries/batteries.cma 在接口电池上存在分歧
我认为可能发生的情况是 Ubuntu 安装了电池 2.2.1,但由于某种原因(安装 merlin?)我的 opam 文件夹中安装了电池 2.3.1,此外,当使用上述电池启动 ocamltop 时,它表示 ocamltop 使用的是 2.2.1 版本。此外,编译
ocamlfind ocamlc -package batteries -linkpkg batteryassault.ml -verbose
我发现 ocamlc 肯定是在使用 opam 中的库,即 2.3.1 版本。
所以我的问题是:什么是/是否有解决方法?