我已经安装了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编译时,它仍然找不到我安装的包与阴谋集团。 在详细模式下编译给出:
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添加到要搜索的包目录列表中? 谢谢!
答案 0 :(得分:6)
您可以使用ghc-pkg list
检查安装的软件包。您可能需要使用ghc
将包指定为-package <pkgname>
,或者我相信添加--make
会触发追踪包,包括包。
编辑:绑定包确实已过时,请参阅the hackage page。这不是包管理问题,唯一可用的模块是Bindings.Deprecated
,您完全可以加载它,即使它是一个空模块。我相信相关部分已分解为bindings-<module>
,因此如果您需要绑定功能,则应该查看这些包。
答案 1 :(得分:2)
http://www.haskell.org/haskellwiki/Cabal-install
要特别注意的一件事是,默认情况下,cabal会在本地安装软件包,而命令
runhaskell Setup configure
runhaskell Setup build
runhaskell Setup install
默认情况下全局安装。如果全局安装包,则忽略本地包。可以通过编辑配置文件来修改cabal-install的默认值。
我在runhaskell
命令中遇到了同样的错误。我在拥有.cabal文件的目录中使用了cabal,并且能够解决错误。