2012-01-12 18 views
5

Haskell Platform 2011.2.0.1を使用して単純なhello worldプログラムをコンパイルしようとしています。 WinGHCiでコードをロードし、GUIを使用してコンパイルすると、.exeが作成されます。 Cygwinから.exeを実行できます。CygwinでHaskellコードをコンパイルし、Windows上のHaskellプラットフォームの他のバグを修正しました。

しかし、(ghc --makeを使用して)Cygwinでコードをコンパイルしようとすると、リンカは失敗します。しかし、Windowsのcmdプロンプトからコンパイルしても、コンパイル+リンカーは正常に動作します。

Cygwinにインポートする必要がある他の環境変数がありますか?その中でコンパイル+リンカを動作させるには?私はCygwin PATHに次のディレクトリを入れました:2011.2.0.1/lib/extralibs/bin、(これらは、Windows環境変数で見ることができる唯一の2つの有効なHaskell関連のエントリです)。

私はまた、Windows環境変数(これはHaskellのインストールのバグのように見える)で無効なアイテムのカップルに気づい:

  1. を(システムVAR)C/ProgramFiles/Haskell/bin - 私がインストールされているため、このディレクトリが存在しません。 Haskell in Dディスク。
  2. (ユーザーvar)userxxx/ApplicationData/cabal/bin - このディレクトリは存在しません。

私はHaskellPlatformでバグレポートを提出しようとしましたが、それを行う権限がありません。

答えて

3

開発環境へのアクセスやエラーの一覧が表示されない場合は、問題がPATHの設定方法に関係していると仮定できます。

Windows上のGHCには、gccコンパイラ(Cコード用)とldリンカがバンドルされています。 Cygwinをインストールした場合は、MinGWツールチェインもインストールされているはずです。ツールチェインには、gccldという独自のバージョンが付属しています。次に、PATHの変数リスト/usr/binをHaskell Platformバイナリディレクトリのパスの前に作成したことがあります。ghcは、GHCにバンドルされているバージョンを見つける前にMinGWリンカとCコンパイラを見つけます。

Cygwinディレクトリの前にHPディレクトリがリストされていることを確認する必要があります。それはこのようにすべきではない:

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

代わりに、それは次のようにする必要があります:

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

これは、問題が何であるかでは唯一の推測であり、あなたがよりよいのためのより多くの詳細を提供する必要があります診断。

+0

ありがとうございました。私はそれが問題だと思っていたので、実際にはPATHの前にハズケルアイテムを置いていました。しかし問題は続く。ここで私のPATHは/ cygdrive/d/sw2/Haskell Platform/2011.2.0.1/lib/extralibs/bin:/ cygdrive/d/sw2/Haskell Platform/2011.2.0.1/binです:/ cygdrive/d/sw2// usr/proc/bin:/ usr/local/bin:/ usr/openwin/bin:/ bin:/ home/user1/etc:/ usr/sbin:/ cygdrive/d/mswin/jdk6u10/bin:/cygdrive/d/src/mswin_utils/ant_1.7.1/bin:/ cygdrive/d/sw2/iverilog/bin – R71

+0

私はいくつかの進歩を遂げました。一度に1つのenv変数をリセットし、コンパイルを試みました。クイックタイム(QTJava.zip)とCLASSPATHからclojureの項目を削除すると、リンカーが機能することが判明しました。しかし、それではなぜWindows-cmdでも失敗しないのですが、同じcmdletも同じですか?これは、haskellプラットフォームのバグですか? – R71

+0

Haskellは何かのためにJavaの 'CLASSPATH'を使わないので、その変数を変更したときに動作するのは偶然のことです。 – dflemstr

関連する問題