usu*_*sul 0 ocaml development-environment 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
Run Code Online (Sandbox Code Playgroud)
ocaml 似乎在 /usr/lib/ocaml 中,它的二进制文件在 /usr/bin/ 中,而 opam 似乎把所有东西都放在 ~/.opam/packages 中。
如何让 OCaml 查看使用 opam 安装的软件包?我发现了许多涉及未绑定模块的问答错误,但似乎没有一个可以为我修复它,或者它们似乎已经过时。另外,我知道我的包管理器 OCaml 不是完全最新的,但是我也从源代码安装了 4.10.0 并且仍然有问题。
小智 5
您可以通过传递库的位置来告诉 OCaml 编译器您的 Opam 包在哪里:
ocamlopt -I /path/to/lib/base /path/to/lib/base/base.cmxa helloword.ml
Run Code Online (Sandbox Code Playgroud)
对于像 的库base,由于各种依赖关系,查找所有参数可能会变得乏味。因此,您可以改用ocamlfind包装器为您传递参数:
ocamlfind ocamlopt -package base -linkpkg helloword.ml
Run Code Online (Sandbox Code Playgroud)