[Haskell-cafe] Static linking for machines that don't have Haskell

Roshan James rpjames at umail.iu.edu
Sat Oct 1 03:59:55 CEST 2011


Hi All,

I am trying to run a Haskell program compiled on my Ubuntu box on a server
box that does not have GHC installed and where I dont have root privileges.
I run into several missing libraries, in particular libgmp, libffi and
libuuid (the later two are needed by my program). How I can statically link
my program such that I can run it on this server?

I have a tried static linking as follows:
*  ghc -static -optl-static -optl-pthread --make -o p main.hs*

This gives me several warnings of the form:
*/usr/lib/haskell-packages/ghc6/lib/network-2.2.1.7/ghc-6.12.3/libHSnetwork-2.2.1.7.a(BSD.o):
In function `sw4B_info':*
*(.text+0x584c): warning: Using 'getservbyport' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking*

And sure enough the generated executable segfaults on the server which has a
different glibc version.

Is there some way to static link all the other libraries needed except
glibc? I have looked around for an example of this but to no avail and the
output of the -v switch seemed a bit overwhelming. Or is there some other
way to go about doing this?

thanks in advance,
Roshan

ps. including these, in case they maybe of some use:

My machine:

*$ ldd p*
* linux-vdso.so.1 =>  (0x00007fff3ffff000)*
* libncurses.so.5 => /lib/libncurses.so.5 (0x00007fbdbbf4f000)*
* libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fbdbbd4a000)*
* librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fbdbbb41000)*
* libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fbdbb93e000)*
* libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbdbb73a000)*
* libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007fbdbb51b000)*
* libgmp.so.3 => /usr/lib/libgmp.so.3 (0x00007fbdbb2be000)*
* libffi.so.5 => /usr/lib/libffi.so.5 (0x00007fbdbb0b6000)*
* libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbdbae30000)*
* libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbdbaa9c000)*
* /lib64/ld-linux-x86-64.so.2 (0x00007fbdbc1b5000)*

Server:

*$ ldd p*
*./p: /lib64/libuuid.so.1: no version information available (required by
./p)*
*        linux-vdso.so.1 =>  (0x00007fffc51fd000)*
*        libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x00000037bce00000)*
*        libuuid.so.1 => /lib64/libuuid.so.1 (0x00000037b7200000)*
*        librt.so.1 => /lib64/librt.so.1 (0x00000037b5a00000)*
*        libutil.so.1 => /lib64/libutil.so.1 (0x00000037bda00000)*
*        libdl.so.2 => /lib64/libdl.so.2 (0x00000037b4a00000)*
*        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000037b5200000)*
*        libgmp.so.3 => not found*
*        libffi.so.5 => not found*
*        libm.so.6 => /lib64/libm.so.6 (0x00000037b4e00000)*
*        libc.so.6 => /lib64/libc.so.6 (0x00000037b4600000)*
*        /lib64/ld-linux-x86-64.so.2 (0x00000037b4200000)*
*
*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110930/13ae3b76/attachment.htm>


More information about the Haskell-Cafe mailing list