我无法执行由haskell编译器编译的文件

问题描述 投票:0回答:1

我想执行一个由 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!"
linux haskell linux-mint
1个回答
0
投票

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
运行。

© www.soinside.com 2019 - 2024. All rights reserved.