Guillaume Yziquel a écrit :
Hi.

The manual is not up to date when it comes to embedding OCaml code into C code.

http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html#toc134

Specifically the section

    18.7.5  Embedding the Caml code in the C code

and the piece of compilation code I'm having trouble with is the following:

ocamlopt -output-obj -o camlcode.o unix.cmxa other .cmx and .cmxa files
        cc -o myprog C objects and libraries \
           camlcode.o -L/usr/local/lib/ocaml -lunix -lasmrun

This code complains about missing symbols from pervasives.

So I adapt it by compiling with pervasives.cmx, and I get

ocamlopt -output-obj -o camlcode.o pervasives.cmx
ld: /usr/lib/ocaml/pervasives.o: No such file: No such file or directory
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
make: *** [camlcode.o] Erreur

But I cannot find pervasives.o anywhere.

Well I found it in stdlib.a, but looking back at the thread started by Aaron Bohannon mid-december

http://caml.inria.fr/pub/ml-archives/caml-list/2009/12/3375527140f0de987a9dc6d2553990c8.en.html

it seems to me that there is little need for the -output-obj option, as shown in the manual. Why not document the embedding by simply compiling the C code tha provides the main function, which itself calls caml_startup, and then linking it with the .cmx with ocamlopt? Why the need for -output-obj, libasmrun.a, etc...?

--
     Guillaume Yziquel
http://yziquel.homelinux.org/

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to