Am Montag, den 10.08.2020, 09:11 +0200 schrieb Bardur Arantsson:
> On 09/08/2020 14.50, Volker Wysk wrote:
> > Hi!
> > 
> > I know of the command line argument "-static". But this only
> > affects
> > the Haskell libraries. I want to link some programs completely
> > statically, no external libraries needed. 
> > 
> > When just linking with "-static" I still have those dynamically
> > linked
> > things:
> > 
> > desktop ~/bin $ ldd sicherung
> >         linux-vdso.so.1 (0x00007ffdab53f000)
> >         libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
> > (0x00007f3633da0000)
> [--snip--]
> >         libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10
> > (0x00007f3633ce3000)
> >         libatomic.so.1 => /lib/x86_64-linux-gnu/libatomic.so.1
> > (0x00007f3633cd7000)
> >         libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7
> > (0x00007f3633ccb000)
> >         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
> > (0x00007f3633ad9000)
> >         /lib64/ld-linux-x86-64.so.2 (0x00007f3633f0c000)
> > 
> > 
> > Is it possible to link the remaining libraries statically too?
> > 
> 
> As Brandon already mentioned, linking glibc statically is not really
> supported (by glibc!), but what you can do is bundle a few of the
> .so's
> together with your binary and use RPATH to help your executable find
> them at load time (well, dynamic link time).
> 
> A project of ours where we do this is using Stack, so I can only
> really
> provide info on doing it with Stack, but hopefully you can adapt to
> whatever you're using:
> 
> We added
> 
>     ld-options:
>     - -Wl,-rpath,$ORIGIN/../lib
> 
> to the 'executable' portion of the package.yaml. This instructs the
> dynamic loader to look for libraries in '../lib' relative to the
> executable's location. You can pick whatever path you want there.
> 
> Once you have that bit set up, you can copy *most* of the libraries
> .so's you're using to that folder on the install target and they'll
> be
> loaded from there. (Copying libc.so is ill advised, but most of the
> others will work just fine. I believe ld-linux-... is also never ever
> loaded from there since that *is* the dynamic loader.)
> 
> (Of course a possibly more robust version of this is to just bundle
> everything into a container of some sort, but that may be a bit
> excessive for your needs.)

Thank you for your elaborate explanation. This would be overkill for
what I have in mind. I'm just trying to save a statically linked copy
of a program of mine, which is involved in my backup, along with the
backup, and also on a maintenance USB stick.

I've stowed you answer away in my personal wiki, and may get back to it
later.


Regards,
Volker

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users

Reply via email to