5

我正在尝试使用 Haskell Platform 2011.2.0.1 在 Haskell 中编译一个简单的 hello world 程序。如果我在 WinGHCi 中加载代码并使用 GUI 进行编译,则会创建 .exe。然后我可以从 Cygwin 运行 .exe。

但是如果我尝试在 Cygwin 中编译代码(使用ghc --make),链接器会失败。但同样,如果我从 Windowscmd提示符编译,那么 compile+linker 工作正常。

我需要将其他环境变量导入 Cygwin 以使编译 + 链接器在其中工作吗?我在 Cygwin PATH 中放置了以下目录:2011.2.0.1/lib/extralibs/bin2011.2.0.1/bin(这是我可以在 Windows 环境变量中看到的唯一两个有效的 Haskell 相关条目)。

我还注意到 Windows 环境变量中有几个无效项(这看起来像是 Haskell 安装中的一个错误):

  1. (system var) C/ProgramFiles/Haskell/bin- 这个目录不存在,因为我在 D 盘中安装了 Haskell。
  2. (user var) userxxx/ApplicationData/cabal/bin- 这个目录不存在。

我试图在 HaskellPlatform 中提交错误报告,但我没有权限这样做。

4

1 回答 1

3

如果无法访问您的开发环境或您遇到的错误列表,我只能假设问题与您设置PATH.

Windows 上的 GHC 捆绑了它自己的gcc编译器(用于 C 代码)和ld链接器。如果您安装了 Cygwin,您可能还安装了 MinGW 工具链,它带有自己的版本gccld. 然后,您可能已经在 Haskell 平台二进制目录的路径之前创建了PATH变量列表,这使得在找到与 GHC 捆绑的版本之前找到 MinGW 链接器和 C 编译器。/usr/binghc

您需要确保 HP 目录列在 Cygwin 目录之前。它不应该是这样的:

$ echo $PATH
/bin:/usr/bin:.../2011.2.0.1/bin

相反,它应该是这样的:

$ echo $PATH
.../2011.2.0.1/bin:/bin:/usr/bin

这只是对问题可能的猜测,您应该提供更多详细信息以便更好地诊断。

于 2012-01-12T14:55:37.240 回答