2

base-unix在 OCaml opam 存储库中看到了这个包。它被描述为“随 OCaml 编译器分发的 Unix 库”。也与 OCaml 编译器一起分发的其他一些库没有自己的包。例如,图书馆没有base-str包这样的东西。str

为什么会有这样的差异?据我所知,在使用 or 编译时,它们都需要在命令行上指定为包或ocamlfindocamlbuild

4

1 回答 1

6

带有 OPAM 包名称 base-XXX 的库是可选库:它们来自 OCaml 编译器本身,但根据计算机环境、操作系统和编译器的构建配置标志,它们可能安装也可能不安装。例如,base-unix 的存在意味着 unix 库在该环境中可用。

另一方面,str 库不依赖于系统,因此可以在任何安装 OCaml 的地方使用。因此 OPAM 不需要显式地提供它的基本包来告诉库的存在。

尽管所有 OCaml 安装都存在 str,但它的链接不是自动的。这就是 ocamlfind 需要一个包的原因。

OPAM 软件包用于通过 opam 命令安装。OCamlFind 包用于链接。它们相关但不同。令人困惑,但这就是我们目前在 OCaml 生态系统中所拥有的。

于 2014-06-05T07:58:00.333 回答