Hello,
2011/10/31 David Allsopp <[email protected]>:
> Compile it with ocamlopt instead of ocamlc - Chapter 11 of the manual (which
> it's a little surprising you hadn't got to, if you've been looking for a few
> days)... http://caml.inria.fr/pub/docs/manual-ocaml/manual025.html
>
> "This chapter describes the OCaml high-performance native-code compiler
> ocamlopt, which compiles Caml source files to native code object files and
> link these object files to produce standalone executables."
Depending on the level of independence one might want on the
underlying system, ocamlopt alone might not me enough, as C libraries
are still dynamically linked. Option "-ccopt -static" is needed to
produce real statically linked binaries. Some parts of the OCaml
runtime may not work when statically linked, YMMV.
Example:
$ cat hello.ml
open Format
let _ = printf "Hello@\n"
$ ocamlopt hello.ml
$ ./a.out
Hello
$ ldd ./a.out
linux-vdso.so.1 => (0x00007fff127e7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faf7ca80000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007faf7c87c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faf7c4e7000)
/lib64/ld-linux-x86-64.so.2 (0x00007faf7cd2a000)
$ ocamlopt -ccopt -static hello.ml
$ ./a.out
Hello
$ ldd ./a.out
not a dynamic executable
$ file ./a.out
./a.out: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux),
statically linked, for GNU/Linux 2.6.15, not stripped
Best regards,
david
--
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