2010-07-23 77 views
3

我编译了我的helloworld.hs并得到了一个helloworld.o文件,我尝试了./helloworld,但它没有工作,那么执行helloworld的正确方法是什么? 我使用Cygwin的,我只是写下$ GHC --make helloworld.hs,我得到helloworld.hihelloworld.exe.manifesthelloworld.o文件,我不知道是什么我是否需要做下一步...如何在cygwin中执行haskell程序

+1

'.o'不可执行。你是如何编译它的? – kennytm 2010-07-23 17:04:40

+0

ghc --make helloworld.hs – Rn2dy 2010-07-23 17:09:56

+0

'helloworld.hs'中有什么? – 2010-07-23 17:47:13

回答

1

因为您还没有指定如何编译的任何内容,例如您正在使用的编译器,我们只能猜测。 使用-c开关获取.o(object)文件的常用方法是使用-c开关;正如手册所说,这意味着“不要链接”。助记符是“编译只有”。没有链接,你只有一个程序的一部分,它不能被执行。正确地说,它需要链接的依赖于特定的目标文件,如果你只是让编译器运行链接器,那么默认情况下会填充一些目标文件。分开链接更复杂。

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
其中模块主要是在一个名为主文件。 hs(或Main.lhs)在当前目录中。程序中的其他模块将被自动定位和编译,链接的程序将被放置在Windows上的a.out' (or Main.exe文件中。