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
[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: 2004-02-11 (12:37)
From: Jacques Garrigue <garrigue@k...>
Subject: Re: [Caml-list] linking order of C libraries.
From: Yamagata Yoriyuki <>
> 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

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.


Jacques Garrigue

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: