Browse thread
[Caml-list] linking order of C libraries.
-
Yamagata Yoriyuki
- Jacques Garrigue
- ecc+@e...
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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 <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