On Win32 platforms, the compiler is capable of both producing and using dynamic link libraries (DLLs) containing ghc-compiled code. This section shows you how to make use of this facility.
strip seems not to work reliably on DLLs, so it's probably best not to.
The default on Win32 platforms is to link applications in such a way that the executables will use the Prelude and system libraries DLLs, rather than contain (large chunks of) them. This is transparent at the command-line, so
sh$ cat main.hs module Main where main = putStrLn "hello, world!" sh$ ghc -o main main.hs ghc: module version changed to 1; reason: no old .hi file sh$ strip main.exe sh$ ls -l main.exe -rwxr-xr-x 1 544 everyone 6144 May 3 17:11 main.exe* sh$ ./main hello, world! sh$ |
will give you a binary as before, but the main.exe generated will use the Prelude and RTS DLLs instead.
6K for a "hello, world" application---not bad, huh? :-)