Haskell cabal:C编译器无法创建可执行文件

时间:2016-12-04 18:18:23

标签: haskell compiler-errors cabal ghc-mod

我正在尝试在windows / x64上为GHC 8.0.1安装ghc-mod。当我尝试通过ghc-mod安装cabal install ghc-mod时,我收到一条错误消息,说我的C编译器无法正常工作(它正在使用与ghc捆绑在一起的c编译器。)

这是输出(第二次运行命令。它基本上是第一个说的但是缩减为错误信息):

C:\Users\******>cabal install ghc-mod
Resolving dependencies...
Configuring old-time-1.1.0.3...
Failed to install old-time-1.1.0.3
Build log ( C:\Users\******\AppData\Roaming\cabal\logs\old-time-1.1.0.3.log ):
Configuring old-time-1.1.0.3...
bash.exe: warning: could not find /tmp, please create!
configure: WARNING: unrecognized options: --with-compiler
checking for gcc... C:\PROGRA~1\Haskell Platform\8.0.1\mingw\bin\gcc.exe 
                    ^ I think the error lies here, as you can see the file path is corrupted but I wasn't able to locate the cause for this
checking whether the C compiler works... no
configure: error: in `/cygdrive/c/Users/******/AppData/Local/Temp/cabal-tmp-6084/old-time-1.1.0.3':
configure: error: C compiler cannot create executables
See `config.log' for more details
cabal: Leaving directory 'C:\Users\******\AppData\Local\Temp\cabal-tmp-6084\old-time-1.1.0.3'
cabal: Error: some packages failed to install:
cpphs-1.20.2 depends on old-time-1.1.0.3 which failed to install.
ghc-mod-5.6.0.0 depends on old-time-1.1.0.3 which failed to install.
haskell-src-exts-1.17.1 depends on old-time-1.1.0.3 which failed to install.
hlint-1.9.35 depends on old-time-1.1.0.3 which failed to install.
old-time-1.1.0.3 failed during the configure step. The exception was:
ExitFailure 77

您能否帮我安装ghc-mod或提供其他任何安装方式。

我已经尝试重新安装Haskell,因为我刚刚开始,但这并没有任何区别。 是的我添加了haskell主页上提供的3行。

1 个答案:

答案 0 :(得分:2)

我无法肯定地知道,但我想我会用认为正在进行的事情来回答。

old-time包中包含一个configure脚本,这是一个Unix shell脚本,用于(惊奇!)配置包。 Cabal构建系统允许包自动集成configure,并为它们运行脚本。在POSIX系统上,总有一个易于使用的shell。但是,在Windows上,情况并非如此。我相信这是你遇到的问题。

现在棘手的部分:为什么你有一个shell?理论上,Haskell平台发布了一个shell。嗯,这是我的猜测:

  • 对于堆栈使用,有a Haskell Platform bug,其中Stack无法找到包含shell脚本的MSYS工具。较新版本的Stack可以解决这个问题,但传入--no-system-ghc告诉Stack忽略任何已安装的工具链并管理安装本身,这比使用HP的副本更可靠。
  • 对于Cabal的使用,我不太确定。我认为 HP团队决定要求您使用特殊的批处理程序来正确设置环境变量,因此如果您只是从正常的命令窗口运行cabal install foo,Cabal将找不到MSYS它会失败。但是,如果没有更多信息,我无法确定是否属实。

我的个人建议:卸载Haskell平台,然后使用the recommended Stack installation instructions。在您的情况下,这只是downloading and running the 64-bit Windows installer

最后:你怀疑的问题实际上不是问题;在Windows上,可以按照您看到的方式压缩长度超过8个字符的路径名(最后使用~1)。路径显示中没有任何错误。