Eli*_*Eli 19 ocaml module compiler-errors
我的问题是ocamlc和ocamlopt apear拒绝找到通过apt-get安装的第三方库.当我尝试将第三方模块合并到我自己的OCaml程序中时,我首先遇到了这个问题,并且很快将其写成个人未能理解OCaml编译.很快 - 然而 - 当我试图按照自己的指示编译其他人的项目时,我发现自己遇到了同样的问题.
这是最直接的例子.其他人都使用ocamlbuild,这会使事情变得模糊不清.
该计划:http://groups.google.com/group/fa.caml/msg/5aee553df34548e2
汇编:
$ocamlc -g -dtypes -pp camlp4oof -I +camlp4 dynlink.cma camlp4lib.cma -cc g++ llvm.cma llvm_bitwriter.cma minml.ml -o minml
File "minml.ml", line 43, characters 0-9:
Error:Unbound module Llvm
Run Code Online (Sandbox Code Playgroud)
即使我提供ocamlc与llvm文件的绝对路径,就像这样......
$ ocamlc -g -dtypes -pp camlp4oof -I +camlp4 dynlink.cma camlp4lib.cma -cc g++ /usr/lib/ocaml/llvm-2.7/llvm.cma /usr/lib/ocaml/llvm-2.7/llvm_bitwriter.cma minml.ml -o minml
Run Code Online (Sandbox Code Playgroud)
......无济于事
我究竟做错了什么?
Gil*_*il' 17
你的命令正在做两件事:它正在编译minml.ml(转换minml.cmo),然后将生成的对象链接到minml.
编译模块需要依赖项的接口.接口包含类型检查器和代码生成器所必需的类型信息; 这个信息在实现中没有重复(.cma这里).因此,对于编译阶段,llvm.cmi必须可用.编译器在包含路径中查找它,因此您需要一个额外的-I +llvm-2.7(这是简称-I /usr/lib/ocaml/llvm-2.7).
链接阶段需要llvm.cma,其中包含模块的字节码实现.在这里,您可以使用-I或提供完整路径,让我们ocamlc知道在哪里找到该文件.
ocamlc -g -dtypes -I +camlp4 -I +llvm-2.7 -pp camlp4oof -c minml.ml
ocamlc -g -cc g++ -I +camlp4 -I +llvm-2.7 dynlink.cma camlp4lib.cma llvm.cma llvm_bitwriter.cma minml.cmo -o minml
Run Code Online (Sandbox Code Playgroud)
或者如果您想在一个命令中执行两个阶段:
ocamlc -g -dtypes -cc g++ -I +camlp4 -I +llvm-2.7 dynlink.cma camlp4lib.cma llvm.cma llvm_bitwriter.cma -pp camlp4oof minml.ml -o minml
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23402 次 |
| 最近记录: |