Linux 如何使从OPAM安装的库对OCaml可用?

Linux 如何使从OPAM安装的库对OCaml可用?,linux,ocaml,ffi,opam,Linux,Ocaml,Ffi,Opam,我遵循OCaml FFI,通过OPAM安装了Ctypes: opam install ctypes 但是,OCaml找不到模块: open Ctypes (* ... *) 我收到错误消息: Unbound module Ctypes 看起来我需要让OCaml知道我的Ctypes安装在哪里?我是否需要更新一些path变量,以便OCaml查找通过OPAM安装的库 这是Ubuntu 15.04、OCaml 4.01.0、OPAM 1.2.0 这意味着您需要向编译器传递一些标志,或者编写make

我遵循OCaml FFI,通过OPAM安装了
Ctypes

opam install ctypes
但是,OCaml找不到模块:

open Ctypes
(* ... *)
我收到错误消息:

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


这是Ubuntu 15.04、OCaml 4.01.0、OPAM 1.2.0 这意味着您需要向编译器传递一些标志,或者编写makefile,或者使用一些项目管理系统

在OCaml中,我们有一个相当成熟的基础架构,特别是在
opam
中发挥了很好的作用。我不想深入解释,只想快速概述一下

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

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

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

记住这个概述,我们可以直接讨论您的问题。所以你已经安装了ctypes。现在让我们来看看<代码> >代码> <代码>包在系统中是如何从<代码> OcAMLFIDS透视图中看到的。最简单的方法是列出所有包,对
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

正如您所看到的,有一个
选项,您可以向该选项传递由
ocamlfind
找到的包的名称,它将自动对编译器可见。

您使用什么构建工具?你能告诉我们你是如何编译代码的吗?