【问题标题】:How to compile an executable from Haskell Stack build?如何从 Haskell Stack 构建中编译可执行文件?
【发布时间】:2020-05-22 13:53:36
【问题描述】:
|-aseCswk2
  |-app
    |-Main.hs
  |-src
    |-Libs.hs
  |-test
    |-Spec.hs
  |-aseCswk2.cabal
  |-Setup.hs
  |-package.yaml
...

所以我有一个使用 Stack 构建系统的 Haskell 项目,其布局如上例所示。如果我使用$ stack test,那么我的 Libs.hs 文件中的函数将使用我的 Spec.hs 文件中的案例进行测试。如果我使用$ stack build,那么我的文件会成功构建,我可以使用$ stack ghci 中的函数。

但是,我想创建 Main.hs 文件的可执行文件,但不知道这怎么可能。我尝试在应用程序目录中使用$ ghc Main.hs 对其进行编译,但即使我已将其作为导入包含在内,也会出现错误提示“无法为 Lib 加载接口”。我也尝试过$stack build aseCswk2:exe:aseCswk2-exe,但没有创建.o 文件来运行。

【问题讨论】:

  • 您可以使用stack run 运行程序。这些文件在一个名为 .stack-world 的隐藏目录中构建。
  • @WillemVanOnsem 谢谢运行我的代码
  • 如果你运行stack build,它会在最后一行打印可执行文件的位置。

标签: haskell compilation executable haskell-stack


【解决方案1】:

Haskell-stack 在隐藏的.stack-work 目录中构建可执行文件。您可以找出stack 使用的二进制文件的位置:

$ stack path --local-install-root
/haskell/app/.stack-work/install/x86_64-linux/3fa5b3c3fbcd473981eef72c68d572129654cbb7c23af146b50d90e29c41b62f/8.6.5

如果您构建应用程序,在此目录中,有一个已构建的二进制文件所在的bin/ 目录。

您还可以使用以下方式运行应用程序:

$ stack <b>run</b>

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多