我编译了我的helloworld.hs文件并得到了一个helloworld.o文件,我尝试运行./helloworld,但是没有成功。请问正确的执行helloworld的方式是什么? 我使用的是cygwin,我只需输入$ ghc --make helloworld.hs就会得到、和文件。接下来我该怎么做呢?
我编译了我的helloworld.hs文件并得到了一个helloworld.o文件,我尝试运行./helloworld,但是没有成功。请问正确的执行helloworld的方式是什么? 我使用的是cygwin,我只需输入$ ghc --make helloworld.hs就会得到、和文件。接下来我该怎么做呢?
根据您使用的是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上)。
由于您没有指定编译方式,例如您使用的编译器是什么,我们只能猜测。 从ghc中获取.o(对象)文件的常见方法是使用-c开关;正如手册所说,这意味着“不链接”。助记符是“仅编译”。没有链接,您只有程序的一部分,它无法执行。它需要链接到什么才能精确地取决于特定的对象文件,如果您只让编译器运行链接器,则默认情况下会填充其中的一些内容。单独链接更加复杂。
.o
文件不可执行。你是怎么编译它的? - kennytm