我找到了一个用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”甚至不存在,这很奇怪。有人可以帮忙吗?非常感谢你。
答案 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"