Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] -thread and ocamlc vs ocamlc.opt
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <xavier.leroy@i...>
Subject: Re: [Caml-list] -thread and ocamlc vs ocamlc.opt
> % ocamlc -thread threads.cma
> % ocamlc.opt -thread threads.cma
> Error on dynamically loaded library: /usr/lib/ocaml/dllthreads.so: undefined symbol: extern_sp

This is a known bug in 3.04.  The switch to dynamic loading of C
libraries was bound to generate a few rough edges; this is the only
one known so far.

> % ocamlopt -thread threads.cmxa                           
> Cannot find file threads.cmxa

This is normal: you can't use threads in native programs, unless OCaml
was set up to use POSIX threads (configure --with-pthread).

> Questions:
> - in which case are ocamlc and ocamlc.opt not equivalent?

When there is a bug in one and not in the other :-)

> - in which case are xxx and xxx.opt not equivalent? 

Can't answer for general xxx.

> At least, it seems camlp4o.opt is pretty useless (one gets "native-code
> program cannot do a dynamic load")
> 
> I've been trying to reduce the size of the ocaml rpm which is getting quite
> huge (27MB), and doing
>   for i in /usr/bin/*.opt ; do
>     ln -s `basename $i` `echo $i | sed "s/.opt$//"`
>   done
> helps!

Frankly, I would rather remove the .opt compilers from the RPM, rather
than remove the non-.opt compilers.  

Concerning the RPM size, several things should be noted (with tongue
in cheek):

- If you had one package with gcc, gdb, libc and assorted goodies, it
would be even larger
- Mandrake contains even larger packages of even more dubious utility
than OCaml
- It is certainly possible to split it into different packages, if you
think not all users will need everything
- Mandrake could always switch to DVDs as their distribution format :-)

> - should threads.cmxa be included somehow/somewhere? The doc says
>     ocamlopt -thread other options threads.cmxa other files
>   is that wrong?

It also says you have to configure with POSIX threads for this to work.
The reason this is not the default configuration is that you need to
trust your POSIX thread implementation and have a good understanding
of its limitations (slower thread creation, fewer max threads allowed).
My experience as the initial developer of LinuxThreads suggest that
these conditions are not often met...

- Xavier Leroy

-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr