对于用Ocaml编写的Java编译器,“链接时出错”

时间:2011-06-16 22:07:11

标签: java compiler-construction ocaml

我找到了一个用Ocaml编写的source Java编译器,它应该可以工作。

但是当我make时,它完成了一个错误:

unzip.o: In function `camlUnzip__59':
(.data+0x540): undefined reference to `camlzip_deflateEnd'
unzip.o: In function `camlUnzip__59':
(.data+0x544): undefined reference to `camlzip_deflate'
unzip.o: In function `camlUnzip__59':
(.data+0x548): undefined reference to `camlzip_deflateInit'
collect2: ld returned 1 exit status
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
make: *** [javacx] Error 2

文件夹中文件“caml_startup”甚至不存在,这很奇怪。有人可以帮忙吗?非常感谢你。

1 个答案:

答案 0 :(得分:4)

caml_startup是OCaml运行时的一部分。

该项目的网站提到它适用于OCaml 3.09,这是相当古老的。它适用于我3.10(它仍然很旧;最新版本是3.12) - 也许它只适用于更新的版本。

然而,作为第一个猜测,我会尝试简单地从unzip.ml删除这些定义 - 它们永远不会被调用,并声明实际上未实现的外部例程(而external例程中的unzip.ml例程1}}在zlib.c)中实现:

external deflate_init: int -> bool -> stream = "camlzip_deflateInit"
external deflate:
  stream -> string -> int -> int -> string -> int -> int -> flush_command
         -> bool * int * int
  = "camlzip_deflate_bytecode" "camlzip_deflate"
external deflate_end: stream -> unit = "camlzip_deflateEnd"