Dear Edwin,
Le 26/04/12 10:33, Török Edwin a écrit :
Here's the way I'm compiling everything. It builds a libhello_world.a static
library from ml_code.obj.o and c_code.o.
ocamlc -c ml_code.mli
ocamlopt -c ml_code.ml
ocamlopt -output-obj ml_code.cmx -o ml_code.obj.o
gcc -c c_code.c -I"`ocamlc -where`"
ar rcs libhello_world.a ml_code.obj.o c_code.o
gcc -o test -L. -L"`ocamlc -where`" test.c -lhello_world -lasmrun -lm -ldl
You need -Wl,--whole-archive -Wl,--no-whole-archive around the link of your .a,
like this:
gcc -o test -L. -L"`ocamlc -where`" test.c -Wl,--whole-archive -lhello_world
-Wl,--no-whole-archive -lasmrun -lm -ldl
Thanks a lot, it works now!
Otherwise the functions from your .a are dropped because nothing else before it
needs it (-lasmrun would, but its after your .a).
What do you mean exactly? I imagine that test.o needs some functions of
the libhello_world.a. But I don't see why libasmrun would need some
other functions of libhello_world...
What about the following alternative where libasmrun is directly
appended to the .a file?
cp "`ocamlc -where`"/libasmrun.a libhello_world.a
ar rcs libhello_world.a ml_code.obj.o c_code.o
gcc -o test -L. -L"`ocamlc -where`" test.c -lhello_world -lm -ldl
Best regards.
Xavier
--
Caml-list mailing list. Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs