首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ocamlbuild;构建顶层

ocamlbuild;构建顶层
EN

Stack Overflow用户
提问于 2010-03-04 03:01:03
回答 1查看 1.1K关注 0票数 2

在成功地找到并使用ocamlfind之后,我发现很难构建顶层。

我构建了一个包含所有模块的.mltop文件,并将包添加到_tags中,但构建不起作用。它找不到使用其中一个模块编译的C函数。打开-classic-display后,我可以看到文件libcside.a没有被包含,甚至根本没有被编译!C文件被添加为myocamlbuild.ml中的依赖项,

代码语言:javascript
复制
flag ["link"; "ocaml"; "use_cutil"] (S [A"-cclib"; A"-L."; ]);
dep  ["link"; "ocaml"; "use_cutil"] ["libcside.a"];

_tags中,

代码语言:javascript
复制
<utilities.*> : use_cutil
<**/*.top> : use_str, use_unix, use_cutil, use_curl, use_mysql

最后,在libcside.clib

代码语言:javascript
复制
cutil.o

我在设置顶层的构建时遗漏了一些东西,但我在网上找不到可靠的资源。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-04 16:39:53

  • 我假设cutil.ml描述了libcside.a的ocaml端。a-正确吗?
  • 你把cutil放在mltop中了吗?
  • 和你当前的插件角质ocaml库不会链接libcside.a。a in (dep只指示ocamlbuild构建它,而不是链接)
  • 这里是一个用C存根构建项目本地ocaml库的简单(也是有效的)方法。在myocamlbuild.ml中:

ocaml_lib "linuxnet";让liblinuxnet_stubs = "liblinuxnet_stubs.“^ !Options.ext_lib in "link"; "ocaml"; "use_linuxnet" "link"; "ocaml"; "use_linuxnet";dep "link";"ocaml";"use_linuxnet";

在liblinuxnet_stubs.clib中:

linuxnet_c.o

请注意,C源代码的名称为linuxnet_c.c,因此生成的目标文件不会覆盖linuxnet.ml中的目标文件(反之亦然)。最后在_tags中:

真: use_linuxnet

通过此设置,它将在toplevel中可用(请注意,不需要将Linuxnet放入.mltop,因为linuxnet.cma将通过use_linuxnet标志添加到链接中(使用ocaml_lib生成))。

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

https://stackoverflow.com/questions/2374136

复制
相关文章

相似问题

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