Компиляция кода на Haskell в Cygwin и некоторые другие ошибки в Haskell Platform для Windows - PullRequest
5 голосов
/ 12 января 2012

Я пытаюсь скомпилировать простую программу hello world на Haskell, используя Haskell Platform 2011.2.0.1. Если я загружаю код в WinGHCi и использую графический интерфейс для компиляции, создается .exe. Тогда я могу запустить .exe из Cygwin.

Но если я попытаюсь скомпилировать код в Cygwin (используя ghc --make), компоновщик завершится неудачно. Но опять же, если я компилирую из приглашения Windows cmd, компилятор + работает нормально.

Есть ли другие переменные окружения, которые мне нужно импортировать в Cygwin, чтобы компилятор + работал в нем? В моем Cygwin PATH я поместил следующие каталоги: 2011.2.0.1/lib/extralibs/bin, 2011.2.0.1/bin (это только две допустимые записи, связанные с Haskell, которые я мог видеть в переменных среды Windows).

Я также заметил несколько недопустимых элементов в переменных среды Windows (это похоже на ошибку в установке Haskell):

  1. (системная переменная) C/ProgramFiles/Haskell/bin - этот каталог не существует, поскольку я установил Haskell на диск D.
  2. (user var) userxxx/ApplicationData/cabal/bin - этот каталог не существует.

Я пытался подать отчет об ошибке в HaskellPlatform, но у меня нет разрешения на это.

1 Ответ

3 голосов
/ 12 января 2012

Без доступа к вашей среде разработки или списка ошибок, которые вы получаете, я могу только предположить, что проблема связана с тем, как вы настроили PATH.

GHC в Windows поставляется с собственным компилятором gcc (для кода C) и компоновщиком ld.Если вы установили Cygwin, вы, вероятно, также установили набор инструментов MinGW, который поставляется с собственными версиями gcc и ld.Затем вы, вероятно, составили список PATH переменных /usr/bin до пути к двоичным каталогам платформы Haskell, что заставляет ghc найти компоновщик MinGW и компилятор C до того, как он найдет версии, которые были объединены с GHC.

Необходимо убедиться, что каталоги HP указаны перед каталогами Cygwin.Это не должно быть так:

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

Вместо этого должно быть так:

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

Это только предположение о том, в чем может быть проблема, и вы должны предоставить большедетали для лучшей диагностики.

...