Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Embedding OCaml - manual not up to date.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2010-02-16 (22:34)
From: Guillaume Yziquel <guillaume.yziquel@c...>
Subject: Re: Embedding OCaml - manual not up to date.
Guillaume Yziquel a écrit :
> Hi.
> The manual is not up to date when it comes to embedding OCaml code into 
> C code.
> 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

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