我从源代码构建ocaml,首先是./configure,然后创建世界
所以我在源文件夹下有一个ocamlc程序
我写了一个简单的程序a.ml:
let a=1
然后./ocamlc a.ml
但得到错误:未绑定的mudule Pervasives
我尝试使用
./ ocamlc -I + compiler-libs ./stdlib/stdlib.cma a.ml
和
./ ocamlc -I + compiler-libs ./compilerlibs/*.cma a.ml
但也得到了这个错误
那么如何构建a.ml使用新编译的ocamlc?谢谢
答案 0 :(得分:4)
通常情况下,OCaml编译器应在make install
使用之前安装。
话虽如此,有一种方法可以在不安装的情况下使用编译器:
$ boot/ocamlrun ./ocamlc -nostdlib -I stdlib -c a.ml
boot/ocamlrun
需要使用正确的字节码解释器。它可以在没有它的情况下工作,但它可能只是运气:新的./ocamlc
shebang中指定的解释器可能预先存在并且可能与您的新编译器兼容。-nostdlib
必须不使用已安装的标准库。-I stdlib
需要加载使用新ocamlc
编译器编译的正确标准库。如果您需要使用其他库,请添加适当的包含和链接选项。
所有内容都在http://caml.inria.fr/pub/docs/manual-ocaml/comp.html中解释,请阅读。
如果要在不安装编译器库的情况下使用编译器库,则不仅必须链接*.cma
下的一个或多个./compilerlibs
文件,还要添加-I
编译器目录选项来源:-I parsing -I utils -I typing ...
,以便./ocamlc
可以找到所需的*.cmi
文件。 (如果你想使用编译器库,你应该熟悉OCaml编译器首先找到模块的方式......)