Linked Cabal沙箱 - 从`cabal repl`找不到的共享库

Ath*_*ark 7 haskell shared-libraries cabal cabal-install

我有两个正在开发的软件包,A而且B.套餐B取决于A.

A它是在自己的沙盒中开发的,类似的故事也适用于B:

A> cabal sandbox init
A> cabal install --enable-shared

B> cabal sandbox init
B> cabal sandbox add-source ../A/
B> cabal install
Run Code Online (Sandbox Code Playgroud)

还要注意那shared: True是我的~/.cabal/config.

这里的一切看起来都不错,它们都安装得很好.但是,在工作时B,如果我发出cabal repl,cabal-install告诉我它无法加载libAsomething.so/.dll文件.这里出了什么问题?

这是确切的错误:

...
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)
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在使用GHC 7.8.3和cabal-install 1.20.0.3.

Eri*_*ikR 2

仅使用一个沙箱对您有用吗?

(unpack A into src/A)
(unpack B into src/B)
cd src/B
cabal sandbox init
cabal add-source ../src/A
cabal install                -- builds both A and B
Run Code Online (Sandbox Code Playgroud)

现在只有一个沙箱(位于 src/B 中)。