17

Haskel で基本的な hello world プログラムを作成し、ghc filename.hs でコンパイルしようとしました。.hi および .o ファイルは生成されますが、実行可能ファイルは生成されず、リンカーに次のエラーが表示されます。

marox@IT-marox:~/Marox$ ghc tupel.hs
Linking tupel ...
/usr/bin/ld: --hash-size=31: 不明なオプション
/usr/bin/ld: --help オプションを使用してください使用情報
collect2: ld が 1 つの終了ステータスを返しました

グーグルは有用な情報を返しませんでした。

私はubuntu 12.04を使用しています。

どうすればこれを修正できますか?

4

2 に答える 2

19

binutils-goldインストールしましたか?はいの場合、これが問題です (ゴールド リンカー--hash-sizeはAFAIKをサポートしていないため)。

可能な解決策:

  1. 金を取り除く
  2. あなたldはおそらく にリンクしてld.goldいるので、シンボリックリンクをに変更してくださいld.ld
  3. -pgmlオプションで使用するリンカを haskell コンパイラに明示的に伝えます。ghc -pgml ld.ld tupel.hs
  4. ghcソースからインストールします。これは、構成スクリプトがghcビルドghcされ、使用されないようになるためです。--hash-size
  5. のバージョンに応じて、の設定ファイルghcでリンカー設定を調整できます。ghc/usr/lib/ghc-your.ghc.version/settings
于 2012-10-24T09:48:01.157 に答える
2

更新 - Ubuntu 12.10 のゴールドは、GNU ld を ld.bfd に移動したようです。この問題を解決するために、推奨されているようにldリンクを削除し、リンクを作り直しました

  ln -s ld.bfd ld

ghc のコンパイルが進行中です。

(usr/lib/ghc の設定ファイルを破壊する方法がわかりませんでした。これは、コマンドラインを介して ld に渡される gcc 用のエントリであるためです。そのとおりでした。)

どこを見ればいいのかを教えてくれた Dominic に感謝します! それは私を夢中にさせていました...

于 2013-03-28T07:28:16.140 に答える