On 13/05/2009 19:54, Duncan Coutts wrote:
Shared libs enthusiasts,

We can use ghc to link a bunch of .o files into a shared lib:

$ ghc -dynamic -shared Blah.o -o libHSblah.so

The question on ELF platforms is how we should set the "soname". This
name is name baked into the .so lib and used to identify the library by
the dynamic linker (to tell when two other libs are talking about the
same dependency).

With gcc, on ELF platforms you would use:

$ gcc -shared Blah.o -o libblah.so -Wl,-soname,libblah.so

Now for ghc, we would normally use a soname corresponding to the package
name, which usually also corresponds to the library file name.

We could look at the file name given by -o, though this is a little
non-standard for such tools.

So the default soname is just the filename, correct? What happens with gcc -shared when you don't specify an soname?

We could require (or at least suggest) -package-name be given when
linking a shared lib. However that would involve baking in the "HS"
library prefix name convention into ghc.

Or we can make the caller specify the soname specifically.

"caller specifies" sounds right, with a sensible default that matches what gcc does.

Cheers,
        Simon


_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to