我想执行一个由 GHC Haskell 编译器编译的二进制文件。
如果我执行
./main.hi
我得到:
bash: ./main.hi: cannot execute binary file: Exec format error
如果我写
./main
我就会明白
bash: ./main: No such file or directory but file exists.
ls
命令的结果:
log.txt main.hi main.hs main.o
chmod
没有帮助解决问题。我的哈斯克尔代码:
module HelloWorld where
main :: IO ()
main = putStrLn "Hello, World!"
main
必须出现在名为 Main
的模块中——或者,使用 GHC,您可以(必须)告知它您的替代主模块的名称。因此,您可以将文件更改为
module Main where
main :: IO ()
main = putStrLn "Hello, World!"
或更改编译行以包含
-main-is
参数;例如:
% ghc -main-is HelloWorld main.hs
进行上述任一更改后,您应该在列表中看到一个附加文件:
% ls
log.txt main main.hi main.hs main.o
这个新文件是可执行文件,可以使用
./main
运行。