具有OPAM包名称base-XXX的库是可选库:它们来自OCaml编译器本身,但它们可能安装也可能不安装,具体取决于计算机环境,操作系统的os和构建配置标志.例如,base-unix的存在意味着unix库在该环境中可用.
另一方面,str库不依赖于系统,因此可以在安装OCaml的任何地方使用.因此,OPAM不需要明确地提供其基础包来告诉库的存在.
虽然所有OCaml安装都存在str,但它的链接并不是自动的.这就是ocamlfind需要一个包的原因.
OPAM包用于通过opam命令进行安装.OCamlFind包用于链接.他们是相关但不同的.令人困惑,但这就是我们目前在OCaml生态系统中所拥有的.