Locating shared libraries

Simon Marlow simonmarhaskell at gmail.com
Tue Jun 19 04:05:00 EDT 2007

Peter Tanski wrote:

> Now each GHC-Haskell-based program installer would search /usr/local/lib 
> for, say, libHSrts_dyn-6.6.1.dylib and install that version if 
> necessary.  What happens on uninstall?  The same thing you get on 
> Windows when you have another program using a particular .DLL--the 
> uninstall of that version of the library would fail but for unix systems 
> _only_ if you also have another program using at while you are doing the 
> uninstall.  So if you did not break everything on each install, 
> eventually you have a complete mess of different versions of GHC 
> libraries in /usr/local/lib that may have no current use but at one time 
> were used for several GHC-Haskell-based programs that have now been 
> upgraded to use something different.  Hopefully those who distributed 
> the binary programs adopted a convention of using the full version of 
> the library instead of symlinking libHSrts_dyn-6.6.1 to libHSrts_dyn, or 
> as a user several of your older programs might break after a later one 
> installed a new version of the library and symlinked that the new 
> version...
> That is why I think your idea was good: put everything into distinct 
> directories.

We are not intending to build-in any particular knowledge about where shared 
libraries are to be installed - that's up to the packager.

With one exception - we have to pick a default for the .tar.bz2 binary 
distributions (and 'make install'), and the only default that makes sense is to 
install the shared libraries in the standard location, /usr/local/lib. 
Otherwise the system will not find them, and GHC itself will not run (assuming 
it is dynamically linked).  You don't get good uninstall support, but that's 
always been the way if you don't use the system package manager.


More information about the Glasgow-haskell-users mailing list