5

Haskell Platform 2011.2.0.1 を使用して、Haskell で単純な hello world プログラムをコンパイルしようとしています。コードを WinGHCi にロードし、GUI を使用してコンパイルすると、.exe が作成されます。その後、Cygwin から .exe を実行できます。

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

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

また、Windows 環境変数にいくつかの無効な項目があることにも気付きました (これは Haskell インストールのバグのようです)。

  1. (system var) C/ProgramFiles/Haskell/bin- Haskell を D ディスクにインストールしたため、このディレクトリは存在しません。
  2. (ユーザー変数) userxxx/ApplicationData/cabal/bin- このディレクトリは存在しません。

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

4

1 に答える 1

3

開発環境にアクセスしたり、発生したエラーの一覧を表示したりできない場合、問題はPATH.

Windows 上の GHC には、独自のgccコンパイラ (C コード用) とldリンカがバンドルされています。Cygwin をインストールした場合は、おそらく独自のバージョンのgccとが付属する MinGW ツールチェーンもインストールしていldます。次に、Haskell Platform バイナリ ディレクトリへのパスの前に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 に答える