我用haskel编写了一个基本的hello世界程序,并试着用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退出状态
谷歌search没有返回任何有用的信息。
我在Ubuntu的12.04。
我怎样才能解决这个问题?
你有没有安装binutils-gold
? 如果是的话,这是问题(因为黄金链接器不支持--hash-size
AFAIK)。
可能的解决方案:
ld
可能链接到ld.gold
,所以把链接改为ld.ld
-pgml
选项使用哪个链接器: ghc -pgml ld.ld tupel.hs
ghc
,因为ghc
的配置脚本会--hash-size
ghc
所以它不会使用--hash-size
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的指点,在哪里看! 这让我疯狂…