0

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

1 回答 1

0

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

丢失的文件 pa_ifdef.cmo 是(可能很明显)camlp4 的预处理插件。查看我系统上的 OCaml 版本,我发现它在 OCaml 3.12 下存在(可能以不受支持的形式)但在 OCaml 4 中不存在(除非我以某种方式错过了它)。我怀疑对这个插件的支持已经被放弃了。

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

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

如果编译时条件没有在您的源代码中广泛使用,您也可以检查并删除它们。

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

于 2013-09-14T15:28:16.620 回答