【问题标题】:Why my ocaml program can't find module Clflags?为什么我的 ocaml 程序找不到模块 Clflags?
【发布时间】:2018-09-29 17:22:05
【问题描述】:

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

这个页面是 ocaml 标准库吗?

当我用一行写一个程序时:

open Marshal

ocamlc 可以构建它

当我写作时

open Clflags

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

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

当我尝试用 opam 安装 Clflags 时,opam 告诉我找不到这个包

那么如何使用包Clflags?

谢谢

【问题讨论】:

    标签: ocaml


    【解决方案1】:

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

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

    Clflags 并不是真的有用,除非你正在破解编译器本身,这对于初学者来说并不是最好的任务。您可以在文档中找到here 如何使用它进行编译:

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

    但话又说回来,除非您对 OCaml 及其编译器有很好的掌握,否则您不想这样做。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 谢谢。有没有办法让vscode在我写open Clflags或者其他非stdlib包的时候不报错?
      • 创建一个.merlin 文件,并使用以下语法指定您正在使用的库:PKG 查看更多,那里 - github.com/ocaml/merlin/wiki/project-configuration
      猜你喜欢
      • 1970-01-01
      • 2021-12-01
      • 2019-11-04
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多