首页 文章

堆栈构建创建输出可执行文件的两个副本

提问于
浏览
2

我是新手,而不是那些精通cabal的人 .

我已将cabal项目转换为堆栈 . 它看起来很好 . 我喜欢它,到目前为止 .

但我观察到了一些我不理解的东西 . 当我执行堆栈构建命令时,我看到创建了两个输出可执行文件 . 两者都在.stack-work路径中,一个在dist下,另一个在安装下 . 它们的尺寸完全不同 . dist路径中的文件几乎是安装路径中文件的两倍 .

我唯一可以想到解释这一点的是dist路径中的可执行文件包含(嵌入自身)在不同机器上运行此代码所需的所有包依赖关系的可能性(它已完成并准备好分发到一个不同的机器),而安装路径中的文件期望它在构建它的同一台机器上运行,并且那些依赖库安装在主应用程序代码外部 .

那有意义吗?

还有其他解释吗?

戴夫史密斯

1 回答

  • 4

    我也在我的机器上创建了相同的两个可执行文件....这对我来说也是一个谜,但我想我知道答案 .

    经过一些小小的 Sleuth 工作,我发现〜/ .stack-work / install / ....中的可执行文件可以通过运行strip从〜/ .stack-work / dist / ....中的可执行文件中相同地创建 . 因此我相信很清楚dist / ....是创建最终简化版本的过程中的一步,它存储在install / ....(后来再次复制到〜/ .local / bin / ) .

相关问题