gpt4 book ai didi

linux - 如何使 OCaml 可以使用从 OPAM 安装的库?

转载 作者:IT王子 更新时间:2023-10-29 01:05:46 30 4
gpt4 key购买 nike

我关注了this tutorial在 OCaml FFI 上并通过 OPAM 安装 Ctypes:

opam install ctypes

但是,OCaml 没有找到模块:

open Ctypes
(* ... *)

我收到错误:

Unbound module Ctypes

看起来我需要让 OCaml 知道我的 Ctypes 安装在哪里?我是否需要更新一些路径变量来让 OCaml 查找我通过 OPAM 安装的库?

这是 Ubuntu 15.04、OCaml 4.01.0、OPAM 1.2.0。

最佳答案

在您的系统上安装某些东西不会使其对编译器自动可见,这不仅适用于 OCaml,而且适用于大多数传统系统,例如 C 或 C++ 等。

这意味着您需要将一些标志传递给编译器,或者编写 Makefile,或者使用一些项目管理系统。

在 OCaml 中,我们有一个相当成熟的基础设施,尤其是与 opam 配合使用非常好。我不想深入解释,只是快速概述一下。

ocamlfind 工具用于在您的系统上查找库。它在思想上有点接近于pkg-config,但在设计上却大不相同。它包装编译器工具以便将选项传递给它们。

ocamlbuild 是一把花哨的瑞士刀,是每个 OCamler 的武器库中必备的工具。它是一种了解所有其他工具以及如何将它们粘合在一起的工具。我会说这是编译项目的首选方式,尤其是小型项目。

oasis 在精神上接近于 autotools,但不是那么通用,并且是在编写的前提下,它应该非常易于使用。它确实非常简单,但仍然非常灵活和强大。

有了这个概述,我们就可以直接解决您的问题了。所以你已经安装了 ctypes。现在让我们从 ocamlfind 的角度看一下 ctypes 包在您的系统中是如何可见的。最简单的方法是列出所有包,ocamlfind 可见并在那里找到 ctypes:

$ ocamlfind list | grep ctypes
ctypes (version: 0.4.1)
ctypes.foreign (version: 0.4.1)
ctypes.stubs (version: 0.4.1)
ctypes.top (version: 0.4.1)

所以,看起来,在 ctypes 的保护伞下有 4 个库。一个基本库和一些额外的库,提供一些默认情况下不需要的功能。

不,让我们尝试将它们与 ocamlbuild 一起使用

ocamlbuild -package ctypes yourprogram.native

或者,不用 ocamlbuild 直接使用 ocamlfind:

ocamlfind ocamlopt -package ctypes yourprogram.ml -o yourprogram.native

如您所见,有一个 package 选项,您可以将 ocamlfind 找到的包名称传递给它,它会自动变为可见给编译器。

关于linux - 如何使 OCaml 可以使用从 OPAM 安装的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065479/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com