【问题标题】:Haskell - Issue Compiling in GHCHaskell - 在 GHC 中编译问题
【发布时间】:2012-02-16 22:32:11
【问题描述】:

我是 Haskell 的新手,我最近安装了带有 GHC 的平台。我决定通过编译一个简单的 Hello world 程序来测试它:main = putStrLn "Hello, world"

现在,当我进入命令行 (Windows 7) 时,找到正确的目录,然后输入 ghc hello.hs,它会返回以下消息:“[1 of 1] Compiling Main (hello.hs,你好.o)”。我知道一旦完成编译,它应该跟随“Linking hello.exe ...”,但它永远不会出现,也不会产生.exe。

基本上,有什么明显的原因会发生这种情况吗?代码有问题吗,有什么我不知道的,还是我应该尝试重新安装 Haskell 平台?

谢谢。

【问题讨论】:

  • 明确一点:您担心是因为它没有生成 hello.exe,还是因为它没有显示那段文本?它是否真的生成可执行文件,并且该可执行文件是否按照指示执行?
  • 抱歉 - 它不会生成 .exe。据我所知,它也不会产生 .o 或 .hi 文件。一旦创建,GHC 通常会将这些文件放在哪里?在与 .hs 相同的目录中?
  • 是的,通常是同一个目录。如果您有较旧的 GHC,您可能需要ghc --make hello.hs。你有什么版本的 GHC? ghc --version 如果您最近安装它应该是 7.0.4 我认为。我在 Win7 上有 7.0.3,ghc hello.hs && hello.exe 工作得很好。
  • 尝试从命令行编译 .hs 仍然无法使用上述建议(它是 7.0.4)。但是,当使用“打开方式...”并选择 ghc 时,它似乎编译得很好。一切都在那里,.exe 按预期运行。虽然我仍然有点厌烦它在命令行中不起作用,以防我将来想使用选项,但现在应该可以正常工作。谢谢大家的意见
  • 我可以编译我的 Hello.hs。 *.hi、*.o 和 *.exe 文件出现,但是当我尝试运行 Hello.exe 时,cmd 一直运行,没有任何反应...

标签: windows haskell compilation ghc


【解决方案1】:

我让 ghc 通过从文件开头删除模块声明将我的程序链接到可执行文件。

【讨论】:

    【解决方案2】:

    它是否生成了 a.exe 或 a.out.exe 或 a.out 文件?如果没有,那么也许您可以自己链接它? ld -o hello.exe hello.o 或您平台上的任何链接命令。

    【讨论】:

      【解决方案3】:

      我会使用--make 选项,如ghc --make hello.hs。 (如果您愿意,您实际上可以省略文件扩展名。)这将自动确定需要做什么,如果需要链接到哪些包,并且通常会执行您期望的所有操作。

      【讨论】:

      • 从 ghc-7.0.* 开始,--make 是默认模式。 OP 有 7.0.4,所以不再需要 --make
      • 是的,他们改变了它。另一个重要的变化是 rtsopts 现在默认是禁用的,所以如果你想运行一些东西,例如+RTS -s,需要链接-rtsopts
      • 是的,我知道 rtsopts 发生了变化 [虽然我无法说出我脑海中的哪个 GHC 版本]。但我不知道 --make。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2011-11-18
      • 2023-01-31
      • 2012-03-23
      • 2012-09-29
      • 1970-01-01
      相关资源
      最近更新 更多