将 haskell 源代码编译为动态库

Compiling haskell source as dynamic library

我正在尝试将 Haskell 源包编译为动态库,以便与 OCaml 代码一起使用。我尝试在源的 .cabal 文件上使用 --enable-shared 选项和 cabal install,但出现 Perhaps you haven't installed the "dyn" libraries for package 'zeromq4-haskell-0.6.5' 错误。经过一番谷歌搜索后,我意识到依赖项也必须编译为动态库。我下载了 zeromq 的源包,并尝试使用 --enable-shared 选项安装 zeromq 包。这次我在 zeromq 的一个依赖项中遇到了类似的错误。我尝试这样做了 4-5 次,但在每个级别都出现了不同依赖项的错误。

我是不是搞错了?我怎样才能将所有依赖项安装为动态库?

谢谢!

如果您通常想要共享库,可以在 .cabal/config:

中永久启用它
shared: True

但是,它只会影响之后安装的库,因此您可能需要清除所有库并重新开始。

如果这只是一次尝试,您可以为此创建一个 cabal 沙箱:

cd yourlib
cabal sandbox init
cabal install --enable-shared

结果将在目录 .cabal-sandbox.