OCaml编译报Core__Core_sys模块不可用错误及新版文档获取问询
问题解决方案
编译报错修复
你遇到的Required module 'Core__Core_sys' is unavailable报错是编译命令缺少链接参数导致的,有两种修复方案:
- 方案1:给原有编译命令添加
-linkpkg参数
修改后的完整命令如下:
原因是ocamlfind默认仅在编译阶段添加依赖包的搜索路径,加ocamlfind ocamlc -thread -package core -linkpkg visitor.ml-linkpkg才会自动在链接阶段引入对应包的编译产物,解决找不到Core内部模块的问题。 - 方案2:使用dune工具管理构建(更推荐,不用手动处理依赖参数)
在代码同级目录新建名为dune的文件,写入以下内容:
执行(executable (name visitor) (libraries core) (threads yes))dune build visitor.exe即可完成编译,所有依赖链接逻辑会自动处理。
文档相关疑问解答
首先需要明确:你看到的get_argv是Jane Street的Core库对Sys模块的扩展,不是OCaml标准库的方法,你open Core之后调用的Sys实际是Core.Sys而非标准库的Sys,所以标准库文档没有对应内容,并不是官方文档过时。
获取对应文档的方式如下:
- 本地安装
odig工具:执行opam install odig完成安装后,运行odig doc core即可打开本地生成的对应版本Core库完整文档,包含所有接口说明、弃用提示、用法示例。 - 你安装Core库时默认已经在本地生成了对应版本的文档,也可以直接到
~/.opam/<你的OCaml版本>/doc/core目录下打开html格式的文档查看。 - 新手学习Core库可以参考《Real World OCaml》第二版,全书基于Core库编写,覆盖了绝大多数新手常见的使用问题和踩坑点,可获取离线版本使用。
内容的提问来源于stack exchange,提问作者Linas
相关产品推荐
相关产品推荐

