首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用'ocamlfind install‘设置Ocaml库,然后在ocamlbuild中使用该库

使用'ocamlfind install‘设置Ocaml库,然后在ocamlbuild中使用该库
EN

Stack Overflow用户
提问于 2012-04-25 14:09:25
回答 1查看 1.8K关注 0票数 4

我按照here的说明使用ocamlfind install在site-lib中设置安装库。我有两个库:一个叫做逻辑,另一个叫做布尔型。在每种情况下,我都在库中安装了.cmo、.cmx、.cmi和.mli文件,例如:

代码语言:javascript
运行
复制
ocamlfind install boolean META boolean.cmo boolean.cmx boolean.cmi boolean.mli

然后,当我使用ocamlbuild构建另一个依赖于逻辑和布尔值的项目时,我得到了以下错误消息:

代码语言:javascript
运行
复制
$ocamlbuild -use-ocamlfind test_logic.native -classic-display
...
/home/phil/godi-3.12.1.0/bin/ocamlfind ocamlopt -c -package boolean -package deriving-    ocsigen -package deriving-ocsigen.syntax -package logic -package oUnit -package unix -syntax   camlp4o -o test_logic.cmx test_logic.ml
/home/phil/godi-3.12.1.0/bin/ocamlfind ocamlopt -linkpkg -linkpkg -package boolean -package deriving-ocsigen -package deriving-ocsigen.syntax -package logic -package oUnit -package unix -syntax camlp4o vhdl.cmx fsm.cmx test_logic.cmx -o test_logic.native
+ /home/phil/godi-3.12.1.0/bin/ocamlfind ocamlopt -linkpkg -linkpkg -package boolean -package deriving-ocsigen -package deriving-ocsigen.syntax -package logic -package oUnit -package unix -syntax camlp4o vhdl.cmx fsm.cmx test_logic.cmx -o test_logic.native
gcc: /home/phil/godi-3.12.1.0/lib/ocaml/site-lib/logic/logic.o: No such file or directory
gcc: /home/phil/godi-3.12.1.0/lib/ocaml/site-lib/boolean/boolean.o: No such file or directory
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
Command exited with code 2.

然后,我将逻辑和布尔项目中的.o文件复制到各自的site-lib区域中,并且编译和链接都很好。

我想知道为什么需要.o文件,为什么要把gcc牵扯进来?

下面是我的_tags文件,以防万一:

代码语言:javascript
运行
复制
<*.ml> or "test_logic.native" or "test_loginc.byte": package(boolean),package(unix),     package(oUnit), package(deriving-ocsigen), package(deriving-ocsigen.syntax), syntax(camlp4o), package(logic)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 14:40:27

请参阅Section 11.1 of the OCaml Manual

从文件x.ml中,ocamlopt编译器生成两个文件: x.o和x.cmx,前者包含本机目标代码,后者包含用于链接和优化单元客户端的额外信息。编译后的实现应该始终以x.cmx的名称引用(当给定.o或.obj文件时,ocamlopt假设它包含从C编译的代码,而不是从Caml编译的代码)。

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

https://stackoverflow.com/questions/10310220

复制
相关文章

相似问题

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