Плагины Haskell и песочница Cabal
Итак, я пытаюсь использовать пакет плагинов для динамической загрузки функции haskell из исходного файла. Исходный файл зависит от пакета foo
с модулем Foo.Bar
, Я запускаю свой проект в песочнице Cabal, где у меня есть foo
установлены. И моя основная программа, и модуль, который я загружаю с плагинами, зависят от foo
, Я всегда получаю одну из следующих двух ошибок:
Когда у меня есть foo
установлен в ~/.cabal
Я получаю ошибку:
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
aizmvszmaizmlibzm0zi1_FooziBar_zdfTypeableBazzuds2_closure
whilst processing object file
/home/joey/.cabal/lib/foo-0.1/ghc-7.6.3/HSfoo-0.1.o
This could be caused by:
* Loading two different object files which export the same symbol
* Specifying the same object file twice on the GHCi command line
* An incorrect `package.conf' entry, causing some object to be
loaded twice.
GHCi cannot safely continue in this situation. Exiting now. Sorry.
Когда я не установил его в ~/.cabal
Я получаю стандартную ошибку "модуль не найден". И когда он не установлен в моей песочнице, я получаю тот же модуль не найден ошибка, пытаясь скомпилировать мой основной программный код.
Документация по плагинам в лучшем случае скудна. Есть мысли о том, как это решить?
1 ответ
Я получил это с помощью System.Plugins.Make, чтобы сделать компиляцию вместо того, чтобы полагаться на уже существующие объектные файлы. Не полное решение, не объясняет проблему, но оно работает для меня на данный момент.