Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to compile an executable from Haskell Stack build?

|-aseCswk2
  |-app
    |-Main.hs
  |-src
    |-Libs.hs
  |-test
    |-Spec.hs
  |-aseCswk2.cabal
  |-Setup.hs
  |-package.yaml
...

So i have a Haskell project that uses a Stack build system and is laid out as the example above. If i use $ stack test then my functions in my Libs.hs file are tested with the cases in my Spec.hs file. If i use $ stack build then my file builds successfully and i can use the functions inside $ stack ghci.

However, i want to create an executable of the my Main.hs file but don't know how this is possible. I have tried compiling it using $ ghc Main.hs inside the app directory but get an error saying 'Failed to load interface for Lib' even though i have included it as an import. I have also tried $stack build aseCswk2:exe:aseCswk2-exe but no .o files are created to run.

like image 479
CadyOG Avatar asked Jun 28 '26 13:06

CadyOG


1 Answers

Haskell-stack builds the executable in the hidden .stack-work directory. You can find out where the binaries are located that stack uses with:

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

In this directory, there is, if you build the application, a bin/ directory where the binary is located that has been built.

You can also run the application with:

$ stack run
like image 95
Willem Van Onsem Avatar answered Jun 30 '26 15:06

Willem Van Onsem