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

Reply via email to