* [Caml-list] Problem building custom toplevel
@ 2002-07-22 14:08 Rolf Wester
2002-07-24 8:28 ` Alessandro Baretta
2002-07-25 9:16 ` Xavier Leroy
0 siblings, 2 replies; 3+ messages in thread
From: Rolf Wester @ 2002-07-22 14:08 UTC (permalink / raw)
To: caml-list
Hi,
I have a c++-library compiled with the icc-compiler, a c-interface to this
library (cinterface.h and cinterface.cpp) and stubs files generated using
camlidl (ocaml_opt.idl, ocaml_opt_stubs.cpp, ocaml_opt.ml, ocaml_opt.mli).
I try to build a custom toplevel with:
ocamlmktop -custom -thread unix.cma str.cma bigarray.cma nums.cma \
threads.cm graphics.cma \
../cinterface/cinterface.o ocaml_opt_stubs.o ocaml_opt.cmo \
/usr/lib/libexpat.a \
/usr/lib/libdfftw.a \
/opt/intel/compiler60/ia32/lib/libcxa.so \
/lib/ld-linux.so \
../lib/libopt.a \
-cclib -ldl -cclib -lpthread -cclib -lutil -cclib -lm -cclib -lc \
-o ocaml_opt
but get an almost endless list of undefined references (almost 6000 lines of
output). Here some examples:
../cinterface/cinterface.o(.text+0x1a): undefined reference to `operator
new[](unsigned)'
../cinterface/cinterface.o(.text+0xb10): undefined reference to
`std::_String_base::_Xran() const'
../cinterface/cinterface.o: In function
`std::out_of_range::out_of_range(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
oe_m2.o(.gnu.linkonce.t._ZNSt6vectorIS_IdSaIdEESaIS1_EE9_Insert_nEPS1_jRKS1_+0x95e):
undefined reference to `__cxa_end_catch'
oe_m2.o is in libopt.a.
I don't have any idea how to solve this problem. I would be very appreciative
for help.
Thanks in advance
Rolf Wester
P.S.: If icc is the problem, compiling libopt.a with g++ would be no option.
But it should work somehow, I have built a shared library for use with Python
and that one works.
-------------------
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] Problem building custom toplevel
2002-07-22 14:08 [Caml-list] Problem building custom toplevel Rolf Wester
@ 2002-07-24 8:28 ` Alessandro Baretta
2002-07-25 9:16 ` Xavier Leroy
1 sibling, 0 replies; 3+ messages in thread
From: Alessandro Baretta @ 2002-07-24 8:28 UTC (permalink / raw)
To: rolf.wester; +Cc: caml-list
Rolf Wester wrote:
> Hi,
>
> I have a c++-library compiled with the icc-compiler, a c-interface to this
> library (cinterface.h and cinterface.cpp) and stubs files generated using
> camlidl (ocaml_opt.idl, ocaml_opt_stubs.cpp, ocaml_opt.ml, ocaml_opt.mli).
> I try to build a custom toplevel with:
>
> ocamlmktop -custom -thread unix.cma str.cma bigarray.cma nums.cma \
> threads.cm graphics.cma \
> ../cinterface/cinterface.o ocaml_opt_stubs.o ocaml_opt.cmo \
> /usr/lib/libexpat.a \
> /usr/lib/libdfftw.a \
> /opt/intel/compiler60/ia32/lib/libcxa.so \
> /lib/ld-linux.so \
> ../lib/libopt.a \
> -cclib -ldl -cclib -lpthread -cclib -lutil -cclib -lm -cclib -lc \
> -o ocaml_opt
> ...
Apparently no Jedi Camler has answered your question yet, so
I'll give you my opinion FWIW. I believe you are linking the
files in the wrong order. All references in a given file
provided as input to the ocaml compiler during the linking
phase must be resolved in the files *preceding* it on the
command line. The fact that the linker is unable to resolve
such "banal" references as operator new probably indicates
that libcxa.so should be placed towards the beginning of the
cammand line. Anyhow, try to work out a dependency DAG
between the different linking modules, in order to discover
precisely what conflict(s) is(are) causing the above
mentioned problem.
I hope this helps. Otherwise, you'll have to wait for one of
the Jedis to come along and solve the problem.
Alex
-------------------
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] Problem building custom toplevel
2002-07-22 14:08 [Caml-list] Problem building custom toplevel Rolf Wester
2002-07-24 8:28 ` Alessandro Baretta
@ 2002-07-25 9:16 ` Xavier Leroy
1 sibling, 0 replies; 3+ messages in thread
From: Xavier Leroy @ 2002-07-25 9:16 UTC (permalink / raw)
To: Rolf Wester; +Cc: caml-list
> I have a c++-library compiled with the icc-compiler, a c-interface to this
> library (cinterface.h and cinterface.cpp) and stubs files generated using
> camlidl (ocaml_opt.idl, ocaml_opt_stubs.cpp, ocaml_opt.ml, ocaml_opt.mli).
> I try to build a custom toplevel with:
> [...]
> but get an almost endless list of undefined references (almost 6000 lines of
> output). Here some examples:
I avoid C++ as much as I can, so this is just a wild guess. Could it
be that you're calling the wrong linker? ocamlmltop -custom performs
its linking stage by calling the C compiler that was used to build
OCaml, usually cc or gcc. (You can see exactly how the linker is
called by adding the flag -verbose.) Maybe you need to use icc as the
linker, or pass some magic flag to it telling that you're using C++
libraries. You can do that with the -cc flag, e.g.
ocamlmktop -cc "icc <whatever options>" -custom ...
Good luck,
- Xavier Leroy
-------------------
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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-07-25 9:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-22 14:08 [Caml-list] Problem building custom toplevel Rolf Wester
2002-07-24 8:28 ` Alessandro Baretta
2002-07-25 9:16 ` Xavier Leroy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox