安装旧的主动网络语言计划

时间:2013-09-14 05:24:06

标签: ocaml camlp4

有人可以帮我解释一下吗?我正在尝试安装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

1 个答案:

答案 0 :(得分:0)

您没有说出您正在使用的OCaml版本。

缺少的文件pa_ifdef.cmo(可能很明显)是camlp4的预处理插件。通过我的系统上的OCaml版本,我看到它在OCaml 3.12下存在(可能是不受支持的形式),但不适用于OCaml 4(除非我以某种方式错过了它)。我怀疑这个插件的支持已被删除。

我自己用过这个插件;它的目的与c预处理器cpp大致相同。即,它基于编译时提供的标志测试进行条件编译。

近年来,我很幸运没有条件编译,所以我不知道这个设施的最新状态。但是如果有一个类似的插件可以与最新的OCaml编译器一起使用,那就不会让我感到惊讶。因此,一种解决方案是查看最近的camlp4并找到替代品。

如果编译时条件未在您的来源中广泛使用,您也可以通过并删除它们。

另一种选择是使用旧版本的OCaml进行编译。