为什么我的ocaml程序无法找到模块Clflags?

时间:2018-04-19 09:11:47

标签: ocaml

我是ocaml的新手,我找到了这个页面: https://caml.inria.fr/pub/docs/manual-ocaml/libref/

这个页面是ocaml标准的lib?

当我用一行编写程序时:

open Marshal

ocamlc可以建立它

当我写

open Clflags

ocamlc给我错误:未绑定的模块Cflags

但是Clflags和Marshal都在这个页面的列表中

当我尝试使用opam安装Clflags时,opam告诉我无法找到此包

那么如何使用包Clflags?

由于

2 个答案:

答案 0 :(得分:2)

Cflags是一个模块,属于compiler-libs库,是编译器开发人员和扩展编译器的库。所以很有可能,你正在寻找一个错误的模块。

要使用它,您需要将compiler-libs文件夹添加到搜索路径并指定提供此模块的库名称。一些自动化工具会为您执行此操作,但在较低级别(对于本机编译),这将是这样的(假设您的代码位于test.ml文件中):

ocamlopt -I +compiler-libs ocamlcommon.cmxa test.ml  -o test

答案 1 :(得分:1)

这不是标准库的索引,而是标准发行版提供的所有模块的索引,包括编译器的前端模块,Clflags是其中的一部分。

您可以获取标准库模块here的列表,以及“核心”,始终打开的模块here

除非你正在攻击编译器本身,否则

Clflags并不是真的有用,这对初学者来说并不是最好的任务。您可以在文档中找到here如何使用它编译:

ocamlc other options -I +compiler-libs ocamlcommon.cma other files

但话又说回来,在你很好地掌握OCaml及其编译器之前,你不想这样做。