shared libraries on OS X

John Lato jwlato at gmail.com
Sat May 28 13:14:12 CEST 2011


Hello,

I recently tried to build ghc on OS X Snow Leopard as 64-bit with shared
library support.  I had to self-compile gmp and modify mk/build.mk (I later
saw that Edward Amsden blogged about the same experience,
http://blog.edwardamsden.com/2011/04/howto-install-ghc-703-on-os-x-64-bit.html),
and it seemed to work, but executables don't run.  For example, with this
small program:

> import qualified Data.Vector.Unboxed as V
> main = let vec = V.replicate 10 (1 :: Int) in print $ V.sum vec

I get this result:

Mac-1:~ johnlato$ ghc -O -dynamic foo.hs
[1 of 1] Compiling Main             ( foo.hs, foo.o )
Linking foo ...
Mac-1:~ johnlato$ ./foo
dyld: Library not loaded:
/private/var/folders/aJ/aJF0t1uBF7WDCz1PZV0A0U+++TI/-Tmp-/vector-0.7.0.176669/vector-0.7.0.1/dist/build/libHSvector-0.7.0.1-ghc7.0.3.dylib
  Referenced from: /Users/johnlato/./foo
  Reason: image not found
Trace/BPT trap

It seems that dyld is looking into build folders for the libraries.  If I
set DYLD_LIBRARY_PATH before compiling it appears to work:

Mac-1:~ johnlato$ export
DYLD_LIBRARY_PATH=~/.cabal/lib/vector-0.7.0.1/ghc-7.0.3/:~/.cabal/lib/primitive-0.3.1/ghc-7.0.3/
Mac-1:~ johnlato$ ghc -O -dynamic foo.hs [1 of 1] Compiling Main
( foo.hs, foo.o )
Linking foo ...
Mac-1:~ johnlato$ ./foo
10

This seems to be required for any libraries I've installed via cabal-install
--user, which quickly becomes onerous.

Could anyone give me some advice on how to make this work properly (e.g.
without manually setting DYLD_LIBRARY_PATH)?

Thanks,
John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20110528/b074ad66/attachment.htm>


More information about the Glasgow-haskell-users mailing list