有人可以帮我解释一下吗?我正在尝试安装PLAN(主动网络的数据包语言)。从我在Mac OS X 10.8.4上的终端:
hntvlan569:~ Scott_Andrew_Collins$ cd OCamlPLAN
hntvlan569:OCamlPLAN Scott_Andrew_Collins$ cd plan-3.22/
hntvlan569:plan-3.22 Scott_Andrew_Collins$ make
ocamlc.opt -pp "camlp4o pa_ifdef.cmo -DPLAN_UNSAFE -DPLANPORT_TCP -DC_CRYPTO" -w s
-thread -I basis -I interpreter -I planet -I port -I util -I RIP -I resident -I
arp -I csum -I frag -I net -I reliable -I dns -I exp -I flow -I security -I
crypto -I builder -I snap -I apps -I common -c common/critical.ml -o
common/critical.cmo Camlp4: Uncaught exception: DynLoader.Error ("pa_ifdef.cmo",
"file not found in path")
Error while running external preprocessor
Command line: camlp4o pa_ifdef.cmo -DPLAN_UNSAFE -DPLANPORT_TCP -DC_CRYPTO
'common/critical.ml' >
/var/folders/pm/m53jrwbd10x0q701d7sw2zrw0000gp/T/ocamlpp9101d0
make: *** [common/critical.cmo] Error 2
答案 0 :(得分:0)
您没有说出您正在使用的OCaml版本。
缺少的文件pa_ifdef.cmo(可能很明显)是camlp4的预处理插件。通过我的系统上的OCaml版本,我看到它在OCaml 3.12下存在(可能是不受支持的形式),但不适用于OCaml 4(除非我以某种方式错过了它)。我怀疑这个插件的支持已被删除。
我自己用过这个插件;它的目的与c预处理器cpp大致相同。即,它基于编译时提供的标志测试进行条件编译。
近年来,我很幸运没有条件编译,所以我不知道这个设施的最新状态。但是如果有一个类似的插件可以与最新的OCaml编译器一起使用,那就不会让我感到惊讶。因此,一种解决方案是查看最近的camlp4并找到替代品。
如果编译时条件未在您的来源中广泛使用,您也可以通过并删除它们。
另一种选择是使用旧版本的OCaml进行编译。