9

我已经安装了 ghc 6.12.3,然后是 Haskell 平台。我正在尝试编译一个测试程序:

$ ghc test.hs
test.hs:3:0:
    Failed to load interface for `Bindings':
      Use -v to see a list of the files searched for.

所以,很自然,我愿意

cabal install Bindings

哪个工作正常,并将包放在 ~/.cabal/lib/bindings-0.1.2 中。问题是,当我用 ghc 再次编译时,它仍然找不到我用 cabal 安装的包。以详细模式编译给出:

ghc -v test.hs
Using binary package database: /home/ludflu/ghc/lib/ghc-6.12.3/package.conf.d/package.cache
Using binary package database: /home/ludflu/.ghc/x86_64-linux 6.12.3/package.conf.d/package.cache

正如另一个 stackoverflow 用户所建议的,我尝试了:

ghc-pkg describe rts > rts.pkg
vi rts.pkg                      # add the /home/ludflu/.cabal/lib to `library-dirs` field
ghc-pkg update rts.pkg

但无济于事。如何将 .cabal 添加到要搜索的包目录列表中?谢谢!

4

2 回答 2

6

您可以检查安装了哪些软件包ghc-pkg list。可能是您需要指定要使用的包ghc-package <pkgname>或者我相信添加--make到将触发对依赖项的追踪,包括包。

编辑: bindings 包确实已经过时,请参阅hackage 页面。这不是包管理问题,唯一可用的模块是Bindings.Deprecated,您完全可以加载它,即使它是一个空模块。我相信相关部分已经分解成bindings-<module>,所以如果你想要绑定功能,你应该看看那些包。

于 2011-01-09T21:13:23.697 回答
3

http://www.haskell.org/haskellwiki/Cabal-install

需要特别注意的一件事是,cabal 默认情况下将软件包安装在本地,而命令

runhaskell Setup configure
runhaskell Setup build
runhaskell Setup install

默认全局安装。如果全局安装包,则忽略本地包。cabal-install 的默认值可以通过编辑配置文件来修改。

我在命令中遇到了同样的错误runhaskell。我在具有 .cabal 文件的目录中使用了 cabal,并且能够解决错误。

于 2013-06-18T13:53:14.467 回答