BTW, in case it wasn't clear with all this talk about static linking.
OCaml links OCaml libraries statically, but C libraries dynamically.
For example here is cduce, an OCaml program which uses many different
libraries:
$ ldd `which cduce`
libexpat.so.0 => /lib64/libexpat.so.0 (0x0000003c76e00000)
libcurl.so.3 => /usr/lib64/libcurl.so.3 (0x0000003fb7000000)
libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2
(0x0000003fbaa00000)
libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003fbb200000)
libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3
(0x0000003fbae00000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003c79600000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003c78600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003c73600000)
libidn.so.11 => /usr/lib64/libidn.so.11 (0x0000003297800000)
libssl.so.6 => /lib64/libssl.so.6 (0x0000003fbb600000)
libcrypto.so.6 => /lib64/libcrypto.so.6 (0x0000003c79200000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003c74200000)
librt.so.1 => /lib64/librt.so.1 (0x00000038b2200000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x0000003682000000)
libm.so.6 => /lib64/libm.so.6 (0x0000003c73a00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c73200000)
libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0
(0x0000003fba600000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c72e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003ff2400000)
$ file `which cduce`
/usr/bin/cduce: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
Rich.
--
Emerging Technologies, Red Hat -
http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in
England and Wales under Company Registration No. 03798903