From 6602f49495c94e8533c8b482698bcf570a8d8933 Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Sat, 14 Nov 2015 12:32:51 -0800 Subject: Revert "Revert "Merge pull request #9543 from NixOS/staging.post-15.06"" This reverts commit 741bf840dad05cd1728481045466811ae8ae8281. This reverts the fallout from reverting the major changes. --- doc/haskell-users-guide.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'doc/haskell-users-guide.md') diff --git a/doc/haskell-users-guide.md b/doc/haskell-users-guide.md index b06a81e5b36..446f08eb697 100644 --- a/doc/haskell-users-guide.md +++ b/doc/haskell-users-guide.md @@ -666,6 +666,27 @@ to find out the store path of the system's zlib library. Now, you can The same thing applies to `cabal configure`, of course, if you're building with `cabal-install` instead of Stack. +## Creating statically linked binaries + +There are two levels of static linking. The first option is to configure the +build with the Cabal flag `--disable-executable-dynamic`. In Nix expressions, +this can be achieved by setting the attribute: + + enableSharedExecutables = false; + +That gives you a binary with statically linked Haskell libraries and +dynamically linked system libraries. + +To link both Haskell libraries and system libraries statically, the additional +flags `--ghc-option=-optl=-static --ghc-option=-optl=-pthread` need to be used. +In Nix, this is accomplished with: + + configureFlags = [ "--ghc-option=-optl=-static" "--ghc-option=-optl=-pthread" ]; + +It's important to realize, however, that most system libraries in Nix are built +as shared libraries only, i.e. there is just no static library available that +Cabal could link! + # Other resources -- cgit 1.4.1