You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Stack编译独立Haskell源码文件?无需创建完整项目

直接用Stack编译单个Haskell文件为可执行程序

嘿,完全懂你不想折腾完整项目配置的心情!其实Stack早就考虑到了这种需求——不用写.cabal或者stack.yaml,直接用它自带的命令就能搞定单个文件的编译,而且用的还是你通过Stack安装的GHC环境,不会和系统里的其他GHC版本冲突。

下面给你几种实用的方式:

1. 基础编译(无额外依赖)

如果你的辅助文件没有用到Stack默认环境之外的包,直接用stack ghc命令就行,语法和原生ghc几乎一样,只需要在前面加stack,并用--分隔Stack参数和GHC参数:

stack ghc -- your-helper-file.hs

执行完之后,当前目录会生成对应的可执行文件:Linux/macOS下是your-helper-file,Windows下是your-helper-file.exe,直接在Shell里运行./your-helper-file(Windows下直接输文件名)就行。

2. 编译带额外依赖的文件

要是你的文件用到了比如text、aeson这类第三方包,不用专门建项目,直接用--package参数指定依赖即可:

stack ghc --package text --package aeson -- your-helper-file.hs

Stack会自动下载、构建这些依赖,然后完成你的文件编译,全程不用手动配置任何项目文件。

3. 做成可直接运行的脚本(懒人福音)

如果你想更省事,甚至不想手动敲编译命令,可以给你的Haskell文件加上Shebang注释,让它变成可直接执行的脚本。比如在your-helper-file.hs的最开头加上:

#!/usr/bin/env stack
-- stack script --resolver lts-20.10 --package text

这里的--resolver指定你要用的Stackage快照版本(换成你正在用的版本就行),--package列出你需要的依赖。然后给文件添加执行权限:

chmod +x your-helper-file.hs

之后你就可以像运行Shell脚本一样直接执行它:

./your-helper-file.hs

第一次运行时Stack会自动处理依赖和编译,后续运行如果文件没修改,会直接复用编译好的可执行文件,非常方便。

内容的提问来源于stack exchange,提问作者MathematicalOrchid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:56:05