ghc无法找到我的cabal安装包

问题描述:

我已经安装了ghc 6.12.3,然后安装了Haskell平台。我试图编译一个测试程序:ghc无法找到我的cabal安装包

$ 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目录/绑定-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 

正如所建议的另一个计算器的用户,我想:

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添加到要搜索的软件包目录列表中? 谢谢!

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

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

+0

ghc-list生成一个包含绑定的包列表。它看起来像软件包已过时 - 所以它没有被发现。添加-package参数没有帮助。我尝试了一些其他没有使用Bindings的例子,并且它们运行良好,所以我会着迷于其他一些问题! :) 谢谢你的帮助。 – nont 2011-01-09 21:52:00

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

有一点是特别清楚,是该软件包会被默认安装在本地的阴谋,而命令

runhaskell Setup configure 
runhaskell Setup build 
runhaskell Setup install 

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

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