首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建和使用.cma文件?

如何创建和使用.cma文件?
EN

Stack Overflow用户
提问于 2018-11-17 20:14:13
回答 1查看 176关注 0票数 1

我正在用以下内容创建一个.cma文件:

代码语言:javascript
复制
ocamlc -o ./_build/myLib.cma -a ./_build/myBtree.cmo

但是,不管我怎么努力,我都不能用这个文件。我一直收到“错误:未绑定模块MyLib”。

请有人发布一个简单的示例,该示例使用ocamlc (请不要构建实用程序示例)来创建.cma文件,然后在字节码可执行文件中使用该.cma文件。

完全迷失..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-17 21:33:10

在手工创建库时,需要记住库至少有两个方面:

  • 由cm(X)处理的用于库的文件的实现端。
  • 接口端,它应该包含库公开的每个公共模块的cmi文件。

例如,如果库源文件包含

代码语言:javascript
复制
lib_src
  |- a.ml
  |- b.ml
  |- c.ml

然后,字节码库的编译接口可以通过不公开AB来限制为b.cmi。因此,您可以有一个编译后的库,它只包含以下文件:

代码语言:javascript
复制
lib
  |- a.cmi
  |- c.cmi
  |- lib.cma

此时,编译依赖于库的模块User

代码语言:javascript
复制
(* user.ml *)
printf "%d" A.x

需要同时链接存档lib.cma,但也需要用-I指示cmi文件的位置。

代码语言:javascript
复制
     ocamlc -I lib lib.cma user.ml

第二个值得注意的问题是,cma文件只是一组cmo文件。它本身并不实现任何类型的名称空间。因此,没有由Lib引入的lib.cma模块。名称空间通常由构建系统本身实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53355157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档