У меня есть два пакета, которые я разрабатываю, A
и B
. Упаковка B
зависит от A
.Связанные песочницы Cabal - общие библиотеки не найдены из `cabal repl`
A
был разработан в своей собственной песочнице, и подобная история идет на B
:
A> cabal sandbox init
A> cabal install --enable-shared
B> cabal sandbox init
B> cabal sandbox add-source ../A/
B> cabal install
также отметить, что 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)
Edit:
Я использую GHC 7.8.3 и междусобойчик установить 1.20.0.3.
что такое «доля: правда»? – mb14
@ mb14 http://stackoverflow.com/questions/13188387/what-does-shared-mean-in-cabal-config –
Вы хотите, чтобы '--enable-shared' установил' shared'. Это может быть так, но ссылка, на которую вы ссылаетесь, ничего не говорит о 'shared' в' ~/.cabal/config'. В любом случае этот '--enable-share' не передает библиотеку между песочницей cabal, но использует разделяемую библиотеку vs static one, что совершенно другое. – mb14