首页 > 解决方案 > 告诉 OCaml opam 包在哪里

问题描述

我对 OCaml 很陌生。我尝试在两台不同的计算机上从头开始安装它——都是 Linux Mint——并且两次都遇到了这个问题。

当我使用 opam 安装软件包时(特别是 Base,但 Core 也会发生),OCaml 找不到它。

$ opam install Base
[NOTE] Package base is already installed (current version is v0.11.1).
$ ocaml -open Base
    OCaml version 4.05.0

File "command line", line 1:
Error: Unbound module Base

ocaml 似乎在 /usr/lib/ocaml 中,它的二进制文件在 /usr/bin/ 中,而 opam 似乎将所有内容都放在 ~/.opam/packages 中。

如何让 OCaml 查看使用 opam 安装的软件包?我发现了许多涉及未绑定模块的问答错误,但似乎没有一个可以为我修复它,或者它们似乎已经过时了。另外,我知道我的包管理器 OCaml 不是完全最新的,但我也从源代码安装了 4.10.0 并且仍然有问题。

标签: ocamldevelopment-environmentopam

解决方案


您可以通过传递库的位置来告诉 OCaml 编译器您的 Opam 包在哪里:

ocamlopt -I /path/to/lib/base /path/to/lib/base/base.cmxa helloword.ml

对于类似 的库base,由于各种依赖关系,查找所有参数可能会变得乏味。因此,您可以改为使用ocamlfind包装器为您传递参数:

ocamlfind ocamlopt -package base -linkpkg helloword.ml

推荐阅读