如何在Cygwin中执行Haskell程序

3

我编译了我的helloworld.hs文件并得到了一个helloworld.o文件,我尝试运行./helloworld,但是没有成功。请问正确的执行helloworld的方式是什么? 我使用的是cygwin,我只需输入$ ghc --make helloworld.hs就会得到、和文件。接下来我该怎么做呢?


1
一个 .o 文件不可执行。你是怎么编译它的? - kennytm
ghc --make helloworld.hs - Rn2dy
主函数 = 输出字符串 "hello, world" - Rn2dy
2个回答

3

根据您使用的是Cygwin ghc还是Windows本地ghc,您将得到a.out(历史传统名称)或helloworld.exe。如果您有a.out,则需要将其重命名为.exe才能在Windows上执行。

您可以轻松告诉ghc如何调用可执行文件:ghc -o helloworld.exe --make helloworld.hs

顺便说一下,ghc --help会告诉您:

要编译和链接完整的Haskell程序,请像这样运行编译器:
    ghc-6.8.2 --make Main
其中模块Main位于当前目录中命名为Main.hs(或Main.lhs)的文件中。 程序中的其他模块将自动定位并编译,并将链接的程序放置在文件a.out'(或Main.exe'(在Windows上)。


1

由于您没有指定编译方式,例如您使用的编译器是什么,我们只能猜测。 从ghc中获取.o(对象)文件的常见方法是使用-c开关;正如手册所说,这意味着“不链接”。助记符是“仅编译”。没有链接,您只有程序的一部分,它无法执行。它需要链接到什么才能精确地取决于特定的对象文件,如果您只让编译器运行链接器,则默认情况下会填充其中的一些内容。单独链接更加复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接