ocaml - 告诉 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 并且仍然有问题。
解决方案
您可以通过传递库的位置来告诉 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
推荐阅读
- angular - Firebase - 权限缺失或不足
- javascript - 创建 dom 对象的可编辑副本
- wxwidgets - 为什么 wxWidgets 需要 GTK 或 Motif 等其他 GUI 库?
- lets-encrypt - 使用 --email 获取 Lego 错误传递电子邮件地址
- sql - SQL Server AdventureWorks 数据库中的语义搜索示例
- python - 使用 VectorUDT 列将 PySpark 数据帧读入 Pandas 的问题
- excel - Excel 条件格式通过在多个单元格中包含单元格(地址)的公式
- vb.net - 如何保存用户图像并将其保存在我的应用程序文件夹中并显示它?
- psql - 如何默认设置“\pset null(null)”?
- javascript - 相同的代码在不同的设备上运行不同