I've got two packages that I'm developing, A
and B
. Package B
depends on A
.
A
was developed in it's own sandbox, and a similar story goes for B
:
A> cabal sandbox init
A> cabal install --enable-shared
B> cabal sandbox init
B> cabal sandbox add-source ../A/
B> cabal install
also note that shared: True
is in my ~/.cabal/config
.
Everything looks good here, they both install just fine. However, while working on B
, if I issue cabal repl
, cabal-install tells me that it can't load the libAsomething.so/.dll
file. What went wrong here?
Here is the exact error:
...
Loading package mtl-0.0.1 ... linking ... done.
Loading package A-0.0.0 ... <command line>: can't load .so/.DLL for: /home/athan/dev/A/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.3/A-0.0.0/libHSA-0.0.0-ghc7.8.3.so (/home/athan/dev/foo/B/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.3/A-0.0.0/libHSA-0.0.0-ghc7.8.3.so: undefined symbol: AsomethingCrazyInAmodule_closure)
Edit:
I'm using GHC 7.8.3 and cabal-install 1.20.0.3.
--enable-shared
will setshared
. It might be the case but the link you refer doesn't say anything aboutshared
in~/.cabal/config
. Anyway this--enable-share
doesn't share library between cabal sandbox but uses shared library vs static one, which is totally different. – Thyself