簡體   English   中英

Haskell ghc編譯/鏈接錯誤,不創建可執行文件。 (Linux)的

[英]Haskell ghc compiling/linking error, not creating executable. (linux)

我在haskel中編寫了一個基本的hello world程序,並嘗試使用:ghc filename.hs編譯它。 它生成.hi和.o文件,但沒有可執行文件,並在鏈接器中顯示此錯誤:

marox @ IT-marox:〜/ Marox $ ghc tupel.hs
連接tupel ...
/ usr / bin / ld: - hash-size = 31:未知選項
/ usr / bin / ld:使用--help選項獲取用法信息
collect2:ld返回1退出狀態

谷歌搜索沒有返回任何有用的信息。

我在ubuntu 12.04。

我怎樣才能解決這個問題?

你裝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調整鏈接器設置

更新 - Ubuntu 12.10上的黃金似乎將GNU ld移至ld.bfd。 為了解決這個問題,我按照建議刪除了ld鏈接並重新創建鏈接

  ln -s ld.bfd ld

ghc匯編現在正在進行中。

(無法看到如何破壞usr / lib / ghc中的設置文件,因為該條目用於通過其命令行傳遞給ld的gcc,盡管這可能是我的首選選項,以防其他需要ld的情況它的方式。)

感謝Dominic指向哪里看! 這讓我發瘋了......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM