首页 文章

Haskell ghc编译/链接错误,不创建可执行文件 . (Linux)的

提问于
浏览
16

我在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 .

我怎样才能解决这个问题?

2 回答

  • 19

    你安装了_2956615吗?如果是,这就是问题(因为gold linker不支持 --hash-size AFAIK) .

    可能的解决方案:

    • 删除黄金

    • 你的 ld 可能链接到 ld.gold ,所以将符号链接更改为 ld.ld

    • 明确告诉haskell编译器哪个链接器与 -pgml 选项一起使用: ghc -pgml ld.ld tupel.hs

    • 从源代码安装 ghc ,因为 ghc 的配置脚本将构建 ghc ,这样它就不会使用 --hash-size

    • 根据您的 ghc 版本,您可以在 ghc 的设置文件中调整链接器设置 /usr/lib/ghc-your.ghc.version/settings

  • 2

    更新 - Ubuntu 12.10上的黄金似乎将GNU ld移至ld.bfd . 为了解决这个问题,我按照建议删除了ld链接并重新创建链接

    ln -s ld.bfd ld
    

    ghc汇编现在正在进行中 .

    (无法看到如何破坏usr / lib / ghc中的设置文件,因为该条目用于通过其命令行传递给ld的gcc,尽管这可能是我的首选选项,以防其他需要ld的情况它的方式 . )

    感谢Dominic指向哪里看!这让我发疯了......

相关问题