From: Kakadu <kakadu.hafanana@gmail.com>
To: Caml List <caml-list@inria.fr>
Subject: [Caml-list] Link problems when startup from C++
Date: Sun, 24 Mar 2013 12:00:31 +0400 [thread overview]
Message-ID: <CAGmVoG2t2NqFtFSO0TbFyengdk6SE2p=GeyNaTohJjBKV_+Gbw@mail.gmail.com> (raw)
Hey
My OCaml code uses Unix findlib package and I compile it like this
ocamlfind opt -package compiler-libs.common,unix -linkpkg -output-obj
-dstartup -I ../_build ../_build/qml_wrap.cmxa \
-ccopt -L`ocamlc -where` -ccopt -lunix \
DataItem.cmx MainModel.cmx MiniModel.cmx program.cmx -linkall
-o camlcode.o -verbose
Effective set of compiler predicates:
pkg_compiler-libs,pkg_compiler-libs.common,pkg_unix,autolink,native
+ ocamlopt.opt -output-obj -dstartup -I ../_build -ccopt
-L/home/kakadu/.opam/4.00.1/lib/ocaml -ccopt -lunix -linkall -o
camlcode.o -verbose -I
/home/kakadu/.opam/4.00.1/lib/ocaml/compiler-libs
/home/kakadu/.opam/4.00.1/lib/ocaml/compiler-libs/ocamlcommon.cmxa
/home/kakadu/.opam/4.00.1/lib/ocaml/unix.cmxa ../_build/qml_wrap.cmxa
DataItem.cmx MainModel.cmx MiniModel.cmx program.cmx
+ as -o '/tmp/camlstartup3ada06.o' 'camlcode.o.startup.s'
+ ld -r -o 'camlcode.o' '/tmp/camlstartup3ada06.o' 'program.o'
'MiniModel.o' 'MainModel.o' 'DataItem.o' '../_build/qml_wrap.a'
'/home/kakadu/.opam/4.00.1/lib/ocaml/unix.a'
'/home/kakadu/.opam/4.00.1/lib/ocaml/compiler-libs/ocamlcommon.a'
'/home/kakadu/.opam/4.00.1/lib/ocaml/stdlib.a'
It seems that Unix should be statically linked to 'camlcode.o'. After
that I want to build executable.
g++ -L$QT5_ROOT/qtbase/lib -lQt5Core -lQt5Qml -lQt5Quick -lQt5Gui
-L"`ocamlc -where`" -lunix \
../_build/stubs.o DataItem_c.o moc_DataItem_c.o MainModel_c.o
moc_MainModel_c.o MiniModel_c.o moc_MiniModel_c.o camlcode.o main.o
-lm -ldl -lasmrun \
-o main
And I get many error like this:
camlcode.o: In function `camlProgram__files_in_dir_1009':
(.text+0x399a): undefined reference to `unix_opendir'
/home/kakadu/.opam/4.00.1/build/ocaml/otherlibs/unix/unix.ml:644:
undefined reference to `unix_close'
camlcode.o: In function `camlUnix__fun_2465':
/home/kakadu/.opam/4.00.1/build/ocaml/otherlibs/unix/unix.ml:644:
undefined reference to `unix_close'
camlcode.o: In function `camlUnix__fun_2157':
/home/kakadu/.opam/4.00.1/build/ocaml/otherlibs/unix/unix.ml:644:
undefined reference to `unix_setsid'
camlcode.o: In function `camlUnix__fun_2159':
/home/kakadu/.opam/4.00.1/build/ocaml/otherlibs/unix/unix.ml:644:
undefined reference to `unix_tcflow'
camlcode.o: In function `camlUnix__fun_2161':
/home/kakadu/.opam/4.00.1/build/ocaml/otherlibs/unix/unix.ml:644:
undefined reference to `unix_tcflush'
etc.
Any ideas what I have done wrong? How to link to unix correctly?
Kind regards,
Kakadu
next reply other threads:[~2013-03-24 8:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-24 8:00 Kakadu [this message]
2013-03-24 13:09 ` [Caml-list] " Kakadu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAGmVoG2t2NqFtFSO0TbFyengdk6SE2p=GeyNaTohJjBKV_+Gbw@mail.gmail.com' \
--to=kakadu.hafanana@gmail.com \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox