如何让一个新编译的ocamlc编译一个简单的ocaml程序?

时间:2018-04-23 06:28:59

标签: ocaml

我从源代码构建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?谢谢

1 个答案:

答案 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编译器首先找到模块的方式......)