Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] linking order of C libraries.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jacques Garrigue <garrigue@k...>
Subject: Re: [Caml-list] linking order of C libraries.
From: Yamagata Yoriyuki <yoriyuki@mbg.ocn.ne.jp>
> It would be dumb to ask, but what is the effect of order in which C
> libraries are given to ocamlc?  I ask because when I gave the command
> line something like
> 
>  ocamlc -custom -I +camlp4 -I .. -I ../lib gramlib.cma -o mana\
>  swig.cmo stub_helpers.o stub_wrap.o stub.cmo mana.cmo parse.cmo\
>  ../lib/libchasen.a -cclib -lstdc++
> 
> then it succeeded, but if I gave
> 
> ocamlc -custom -I +camlp4 -I .. -I ../lib gramlib.cma -o mana\
> ../lib/libchasen.a swig.cmo stub_helpers.o stub_wrap.o stub.cmo\
> mana.cmo parse.cmo -cclib -lstdc++
> 
> then it emits a lot of "undefined reference" errors.  (Only difference
> is the location of ../lib/libchasen.a)

The order of the C libraries only changes their order on the
command-line passed to the system linker.
IIRC, the order in which they are passed to the linker is the
same order as on the command-line, but the rule is more subtle for C
libraries specified by a .cma, as some C linkers only resolve
references in libraries occuring after an object on the command-line,
while ocaml expects (ocaml) libraries to appear before they are
referenced. (The exact behaviour is specified somewhere in the
manual.) 

The problem you describe is system dependent: most linkers accept
libraries in any order, but some have the above described restriction.
I believe this was the case on Solaris until 2.6 or 7 for instance.
On such systems you must be careful about linking order, and ocaml can
do very little about it, except providing a way to specify this order.

Cheers,

Jacques Garrigue

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners