我正在尝试使用Haskell Platform 2011.2.0.1在Haskell中编译一个简单的hello world程序。如果我在WinGHCi中加载代码,并使用GUI进行编译,则会创建.exe。然后我可以从Cygwin运行.exe。
但是如果我尝试在Cygwin中编译代码(使用ghc --make
),则链接器会失败。但是,如果我从Windows cmd
提示符编译,那么编译+链接器工作正常。
我需要将任何其他环境变量导入Cygwin,以使编译+链接器工作吗?我在Cygwin PATH中添加了以下目录:2011.2.0.1/lib/extralibs/bin
,2011.2.0.1/bin
(这些是我在Windows环境变量中可以看到的唯一两个有效的Haskell相关条目。)
我还注意到Windows环境变量中有几个无效项(这看起来像是Haskell安装中的一个错误):
C/ProgramFiles/Haskell/bin
- 这个目录不存在,因为我在D盘中安装了Haskell。userxxx/ApplicationData/cabal/bin
- 此目录不存在。我试图在HaskellPlatform中提交错误报告,但我没有权限这样做。
答案 0 :(得分:3)
如果无法访问您的开发环境或您收到的错误列表,我只能假设该问题与您设置PATH
的方式有关。
Windows上的GHC捆绑了自己的gcc
编译器(用于C代码)和ld
链接器。如果你已经安装了Cygwin,你可能还安装了MinGW工具链,它附带了自己的gcc
和ld
版本。然后,您可能在Haskell Platform二进制目录的路径之前创建了PATH
变量列表/usr/bin
,这使得ghc
在找到MinGW链接器和C编译器之前找到它们的版本与GHC捆绑在一起。
您需要确保在Cygwin目录之前列出了HP目录。它应该不是这样的:
$ echo $PATH
/bin:/usr/bin:.../2011.2.0.1/bin
相反,它应该是这样的:
$ echo $PATH
.../2011.2.0.1/bin:/bin:/usr/bin
这只是对问题可能的猜测,你应该提供更多细节以便更好地诊断。