haskell snap exitfailure 1

时间:2014-03-15 06:50:27

标签: haskell cabal haskell-snap-framework

我是Haskell的新手,想要使用snap框架。不幸的是,我无法得到编译的东西。我已经尝试过(我也知道),更新cabal并运行sudo ghc-pkg recache但是当我运行cabal install snap时仍然会得到以下信息。请帮忙。

12 warnings and 1 error generated.
Failed to install binary-0.7.1.0
cabal: Error: some packages failed to install:
SHA-1.6.4 depends on binary-0.7.1.0 which faile
d to install.
binary-0.7.1.0 failed during the building phase
. The exception was:
ExitFailure 1
pwstore-fast-2.4.1 depends on binary-0.7.1.0 wh
ich failed to install.
snap-0.13.2.2 depends on binary-0.7.1.0 which f
ailed to install.

解决方案:

我首先通过自制软件安装'真正的' gcc ,如下所示:

brew update
brew install gcc47

这需要进行安装(如超过一个小时)。完成后,我更新了 GHC 设置,以使用自制软件安装的gcc副本。

GHC设置位于:

/Library/Frameworks/GHC.framework/Versions/Current/usr/lib/ghc-7.6.3/settings

或者如果你用自制软件安装了ghc(我没有)。

/usr/local/Cellar/ghc/7.6.3/lib/ghc-7.6.3/settings

更新专栏

("C compiler command", "/usr/bin/gcc")

("C compiler command", "/usr/local/Cellar/gcc47/4.7.3/bin/gcc-4.7")

然后运行

 cabal update && cabal install snap

一切都应该好。 :)

1 个答案:

答案 0 :(得分:4)

您的问题是binary包有一些严格无效的C预处理器结构。

在环顾四周后,我发现在安装Haskell平台时有人similar problem。似乎核心问题是Clang C预处理器比Haskellers使用的GCC更严格。我假设这是你的问题:你使用的是Clang而不是GCC。如果您使用的是OS X,则这是默认选择。

最简单的解决方案似乎是切换到使用GCC进行预处理。请注意,在OS X上,/usr/bin/gcc实际指向Clang!您需要将GHC指向GCC的实际安装。

您可以通过编辑GHC的配置文件来完成此操作。在我的系统上,它位于

/usr/local/lib/ghc-7.6.3/settings

你可能在某个地方相似,虽然我在Linux而不是OS X.在文件中,更改

("C compiler command", "/usr/bin/gcc")

指向gcc而不是Clang的实际副本,然后再次尝试安装。

从长远来看,这感觉就像包装中的一个错误,可能需要解决,尽管我对包装作者必须确定的问题或限制不太了解。