我有一个C++库,与Haskell库捆绑在一起并从中调用。我使用自定义构建,其中cabal
,Makefile
和Setup.hs
文件几乎与这里描述的文件相同。我还想使用GHCi,因此我的Makefile
创建了一个动态(.so
)库,以及静态(.a
)库。
我可以通过传递.so文件的显式路径来使GHCi在这个环境中工作。本文介绍如何使注意: 我认为GHCi必须使用动态库;如果我对此错误,则可能有更简单的解决方案。
stack ghci
正常工作。主要错误是由于在cabal文件中添加extra-libraries: foo
导致无法找到libfoo.so
。使用-v可以发现,stack没有查找我在Setup.hs脚本中修改的"extra-lib-dirs"路径(stack ghci
确实在cabal文件中指定的"extra-lib-dirs"路径中查找库。不幸的是,由于一个cabal bug,我不能为extra-lib-dirs指定一个相对路径:它会导致cabal configure
和stack build
都失败并显示相同的错误。
我不想系统范围内安装我的C++库(这将通过允许我在extra-lib-dirs中使用绝对路径来解决问题)。
具体问题:
- 我需要一个.so文件来使用GHCi吗?
- 如何告诉
stack ghci
在相对路径中查找库?
stack ghci
不会在那里查找库。 - crockeea