[Haskell-cafe] Static linking problem // CentOS 5.5 - GHC 6.12.3

frode k mailinglist at klevstul.com
Tue Mar 15 23:06:42 CET 2011


I've installed GHC version 6.12.3 on CentOS 5.5 x86_64. I'm trying to run a
very simple Haskell program as CGI following the guide at:
http://www.haskell.org/haskellwiki/Practical_web_programming_in_Haskell

My .hs file I'm trying to use looks like this:
--------------------------------------------------------------
import Network.CGI
import Text.XHtml

page :: Html
page = body << h1 << "Hello World!"

cgiMain :: CGI CGIResult
cgiMain = output $ renderHtml page

main :: IO ()
main = runCGI $ handleErrors cgiMain
--------------------------------------------------------------

If I compile it using dynamic linking I can run it from the command line,
since the environment is correct:

# ghc haskell_v2.hs --make -o haskell_v2.cgi
Linking haskell_v2.cgi ...
# ./haskell_v2.cgi
Content-type: text/html; charset=ISO-8859-1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
><body
  ><h1
    >Hello World!</h1
    ></body
  ></html
>
[root at vps-1040050-2953 haskellTest]#

However I do of course want to run it through CGI on a webserver. I'm
running lighttpd. If I try to run the file compiled above I get "500 -
Internal Server Error", most likely since the enviroment is not correct for
dynamic linked files:

# ldd haskell_v2.cgi
librt.so.1 => /lib64/librt.so.1 (0x00002aff22c25000)
libutil.so.1 => /lib64/libutil.so.1 (0x00002aff22e2e000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002aff23031000)
libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00002aff23236000)
 libm.so.6 => /lib64/libm.so.6 (0x00002aff2346f000)
libc.so.6 => /lib64/libc.so.6 (0x00002aff236f2000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aff23a4a000)
/lib64/ld-linux-x86-64.so.2 (0x00002aff22a08000)
# file haskell_v2.cgi
haskell_v2.cgi: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for
GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9,
not stripped

Hence I wanted to use static linking (
http://www.haskell.org/haskellwiki/Web/Literature/Static_linking ). However
trying to compile using the "-optl-static" option fails:

# ghc haskell_v2.hs --make -optl-static -fforce-recomp -o haskell_v2.cgi
[1 of 1] Compiling Main             ( haskell_v2.hs, haskell_v2.o )
Linking haskell_v2.cgi ...
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(HsNet.o): In
function `hsnet_getaddrinfo':
HsNet.c:(.text+0x11): warning: Using 'getaddrinfo' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sAwu_info':
(.text+0xd45d): warning: Using 'gethostbyaddr' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syh4_info':
(.text+0x4364): warning: Using 'gethostbyname' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sygm_info':
(.text+0x424f): warning: Using 'gethostent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syx3_info':
(.text+0x5318): warning: Using 'sethostent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sxz5_info':
(.text+0x12c6): warning: Using 'endhostent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syJY_info':
(.text+0x605d): warning: Using 'getnetbyaddr' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sycm_info':
(.text+0x3e75): warning: Using 'getnetbyname' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sybC_info':
(.text+0x3de7): warning: Using 'getnetent' in statically linked applications
requires at runtime the shared libraries from the glibc version used for
linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syyg_info':
(.text+0x5458): warning: Using 'setnetent' in statically linked applications
requires at runtime the shared libraries from the glibc version used for
linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sxz5_info':
(.text+0x1296): warning: Using 'endnetent' in statically linked applications
requires at runtime the shared libraries from the glibc version used for
linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syGE_info':
(.text+0x5d42): warning: Using 'getprotobynumber' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sylC_info':
(.text+0x474f): warning: Using 'getprotoent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syvQ_info':
(.text+0x51d8): warning: Using 'setprotoent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sxz5_info':
(.text+0x12f6): warning: Using 'endprotoent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syEu_info':
(.text+0x5a25): warning: Using 'getprotobyname' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syAp_info':
(.text+0x55c4): warning: Using 'getservbyname' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syCX_info':
(.text+0x584c): warning: Using 'getservbyport' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`syoz_info':
(.text+0x49ef): warning: Using 'getservent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sytu_info':
(.text+0x5098): warning: Using 'setservent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/local/lib/network-2.3/ghc-6.12.3/libHSnetwork-2.3.a(BSD.o): In function
`sxz5_info':
(.text+0x1326): warning: Using 'endservent' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_create.o):
In function `timer_create':
(.text+0x124): undefined reference to `pthread_once'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_create.o):
In function `timer_create':
(.text+0x171): undefined reference to `pthread_attr_init'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_create.o):
In function `timer_create':
(.text+0x1b8): undefined reference to `pthread_attr_setdetachstate'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `__start_helper_thread':
(.text+0x3f): undefined reference to `pthread_attr_init'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `__start_helper_thread':
(.text+0x4c): undefined reference to `pthread_attr_setstacksize'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `__start_helper_thread':
(.text+0x92): undefined reference to `pthread_create'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `__start_helper_thread':
(.text+0xc6): undefined reference to `pthread_attr_destroy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `__start_helper_thread':
(.text+0xd4): undefined reference to `pthread_atfork'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `timer_helper_thread':
(.text+0x1e1): undefined reference to `pthread_exit'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/librt.a(timer_routines.o):
In function `timer_helper_thread':
(.text+0x21b): undefined reference to `pthread_create'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function
`init_mparams':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:2486:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:2490:0:
     undefined reference to `pthread_mutex_init'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:2493:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function
`internal_malloc_stats':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:2861:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:2888:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function
`internal_realloc':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:3777:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:3819:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function
`internal_memalign':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:3868:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:3915:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function `ialloc':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:3998:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4052:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function `dlmalloc':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4085:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4186:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function `dlfree':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4211:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4285:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function
`dlmalloc_trim':

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4362:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/dlmalloc.c:4364:0:
     undefined reference to `pthread_mutex_unlock'
/usr/haskell//lib/ghc-6.12.3/libHSffi.a(closures.o): In function `dlmmap':

/home/ian/zz/ghc-6.12.3/libffi/build/src/closures.c:438:0:
     undefined reference to `pthread_mutex_lock'

/home/ian/zz/ghc-6.12.3/libffi/build/src/closures.c:440:0:
     undefined reference to `pthread_mutex_unlock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2.o): In
function `uw_init_context_1':
(.text+0x1be5): undefined reference to `pthread_once'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `__deregister_frame_info_bases':
(.text+0x10bc): undefined reference to `pthread_mutex_lock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `__deregister_frame_info_bases':
(.text+0x10cd): undefined reference to `pthread_mutex_unlock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `__register_frame_info_table_bases':
(.text+0x117f): undefined reference to `pthread_mutex_lock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `__register_frame_info_bases':
(.text+0x1238): undefined reference to `pthread_mutex_lock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `_Unwind_Find_FDE':
(.text+0x14b6): undefined reference to `pthread_mutex_unlock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `_Unwind_Find_FDE':
(.text+0x14c7): undefined reference to `pthread_mutex_lock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `__register_frame_info_table_bases':
(.text+0x119e): undefined reference to `pthread_mutex_unlock'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_eh.a(unwind-dw2-fde-glibc.o):
In function `__register_frame_info_bases':
(.text+0x1257): undefined reference to `pthread_mutex_unlock'
collect2: ld returned 1 exit status

There are two main categories of error messages above:

1 : ...requires at runtime the shared libraries from the glibc version used
for linking

2a : undefined reference to `pthread_....'

2b : undefined reference to `pthread_mutex_lock'

I've had no luck in sorting out how to solve this and an quite new to both
Linux and Haskell. I never managed to install (build from source failed) the
entire Haskell Platform on CentOS 5.5, is that needed? Anyone has got any
idea what might causing these errors?


Regards,
Frode
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110315/d0b33dce/attachment.htm>


More information about the Haskell-Cafe mailing list