How to produce a statically linked binary with GHC?

Agent Zhang agentzh at gmail.com
Fri Aug 15 02:30:56 EDT 2008


2008/8/15 Nicola Squartini <tensor5 at gmail.com>
>
> So I run that gcc command manually adding -lpthread at the end of it end it works,
>  I get the static binary. Isn't it strange? It could be a gcc problem.

Well, it needn't be that hacky ;) The following command works for me
and it does essentially the same thing:

   ghc -i -static -optl-static -optl-pthread -funbox-strict-fields
-fwarn-incomplete-patterns -isrc --make Main -o bin/restyscript

Please note that without -optl-pthread option, I'll get exactly the same errors:

Linking bin/restyscript ...
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/librt.a(timer_create.o):
In function `timer_create':
(.text+0x117): undefined reference to `pthread_once'
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/librt.a(timer_create.o):
In function `timer_create':
...

-lpthread needs to be put to the end of the argument list to help gcc
or ld solve the symbols properly.

Hope this helps ;)

-agentzh


More information about the Glasgow-haskell-users mailing list