gpt4 book ai didi

haskell - GHC 编译为 .o 和 .hi 但没有可执行文件

转载 作者:行者123 更新时间:2023-12-04 12:05:43 25 4
gpt4 key购买 nike

我一直在处理一个小文件,我一直在编译和运行它。我的目录包含 Log.hsLogAnalysis.hs .LogAnalysis.hs看起来像这样:

{-# OPTIONS_GHC -Wall #-}
module LogAnalysis where

import Log

parseMessage :: String -> LogMessage
--some code...

main :: IO ()
main = do
putStrLn (show (parseMessage ("Some log message text")))
当我编译 LogAnalysis.hs使用 GHC 我得到了一个可执行文件,以及其他一些二进制文件:
$ ll
Log.hi
Log.hs
Log.o
LogAnalysis <-- this is the executable which has disappeared
LogAnalysis.hi
LogAnalysis.hs
LogAnalysis.o
我做了一些小改动,现在当我运行时 ghc LogAnalysis.hs我只得到 .hi.o文件,但没有可执行文件。输出是:
[1 of 2] Compiling Log              ( Log.hs, Log.o )
[2 of 2] Compiling LogAnalysis ( LogAnalysis.hs, LogAnalysis.o )
我什至不确定我改变了什么,但这没什么大不了的。知道是什么触发了这个吗?有没有办法强制 GHC 生成可执行文件?
规范:GHC 8.8.3,macOS 10.15.5

最佳答案

由于我将文件声明为未命名的模块 Main , GHC 默认不创建可执行文件。为了将此模块编译为可执行文件,我们可以使用 GHC 的 main-is旗帜。 (感谢评论中的 Krantz 和 Willem Van Onsem 对此的回答 here。)所以编译

ghc -main-is LogAnalysis LogAnalysis.hs
给出输出
[2 of 2] Compiling LogAnalysis      ( LogAnalysis.hs, LogAnalysis.o )
Linking LogAnalysis ...
所以 GHC 已经链接了可执行文件 LogAnalysis这是想要的结果。

关于haskell - GHC 编译为 .o 和 .hi 但没有可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62625481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com