首页 文章

堆栈ghci与库

提问于
浏览
3

我有一个与Haskell库捆绑在一起的C库(并从中调用) . 我使用的自定义版本与 cabalMakefileSetup.hs 文件几乎完全相同here . 我也想使用GHCi,所以我的 Makefile 创建了一个动态( .so )库以及静态( .a )库 .

注意:我认为GHCi必须使用动态库;如果我对此错了,那么也许有一个更简单的解决方案 .

我可以通过将显式路径传递给.so文件来使GHCi在此环境中工作 . 这篇文章是关于如何使 stack ghci 工作 . 产生的主要错误是 cannot find libfoo.so (由于在cabal文件中添加 extra-libraries: foo ) . 使用-v显示堆栈没有查看我在Setup.hs脚本中修改的"extra-lib-dirs"路径(可能是错误bug) . stack ghci does 在"extra-lib-dirs"中查找cabal文件中指定的库 . 不幸的是,由于cabal bug,我无法为extra-lib-dirs指定相对路径:它会导致 cabal configurestack build 失败并出现相同的错误 .

我不想在系统范围内安装我的C库(这将通过允许我在extra-lib-dirs中使用绝对路径来解决问题) .

具体问题:

  • 我需要 .so 文件才能使用GHCi吗?

  • 如何判断 stack ghci 在相对路径中查找库的位置?

1 回答

  • 0

    This answer显示了一种更简洁的方法来包含带有Haskell库的C库,该库不需要使用 extra-libraries 或相对路径 . 我们的想法是让cabal完成所有繁重的工作,而不是使用自定义构建类型 .

    stack ghci 有效(由于GHC bug而对构建顺序有一些警告) .

相关问题