«Ошибка при компоновке» для компилятора Java, написанного на Ocaml - PullRequest
2 голосов
/ 17 июня 2011

Я нашел источник компилятора Java, написанный на Ocaml, который должен работать.

Но когда я сделал 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 Ответ

4 голосов
/ 17 июня 2011

caml_startup является частью среды выполнения OCaml.

На сайте проекта упоминается, что он работает с OCaml 3.09, который довольно старый.Он работал для меня с 3.10 (который все еще довольно старый; последний выпуск - 3.12) - может быть, он просто не работает с более свежими версиями.

Однако, на первый взгляд, я бы попытался просто удалить этиопределения из unzip.ml - они никогда не вызываются и объявляют внешние подпрограммы, которые на самом деле не реализованы (тогда как другие external подпрограммы в unzip.ml реализованы в 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"
...