如何在cygwin中执行haskell程序

如何在cygwin中执行haskell程序,haskell,Haskell,我编译了我的helloworld.hs并得到了一个helloworld.o文件,我尝试了./helloworld,但没有成功,那么执行helloworld的正确方法是什么呢? 我正在使用cygwin,我只是写下$ghc——生成helloworld.hs,然后得到helloworld.hi、helloworld.exe.manifest、helloworld.o文件,我不知道下一步需要做什么 由于您没有指定任何编译方式,例如您正在使用的编译器,因此我们只能猜测。 从ghc中获取.o(对象)文件的常

我编译了我的helloworld.hs并得到了一个helloworld.o文件,我尝试了./helloworld,但没有成功,那么执行helloworld的正确方法是什么呢?
我正在使用cygwin,我只是写下$ghc——生成helloworld.hs,然后得到helloworld.hi、helloworld.exe.manifest、helloworld.o文件,我不知道下一步需要做什么

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

根据您使用的是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——制造主管道

其中,模块Main位于当前目录中名为Main.hs(或Main.lhs)的文件中。程序中的其他模块将自动定位和编译,链接的程序将放置在文件
a.out'(或Windows上的
Main.exe')中


.o
不可执行。您是如何编译它的?ghc——使helloworld.hsmain=putStrLn“你好,世界”