Re: Help with static linking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Statically linking libc  is a recipe for disaster, so either read and understand why, or just take my word for it.

I don't quite understand why you think you need the rest linked statically, BUT the easiest way to do that would be to add LT_INIT to configure.ac to use Libtool, and add --static-libtool-libs to the target's LDFLAGS.

That will cause all of the Libtool libraries to be linked statically when possible.

If you are only targeting Linux desktop systems, png, gobject, gio, and glib should already be there, and in most cases already in memory, so you will benefit from zero additional memory use for the code pages.  This also goes for all the dependencies of these libraries.  I'm not familiar with zzip, so if it isn't a Libtool library you will have to make sure it is linked like this:
-Wl,-static -lzzip -Wl,call_shared

I don't have a computer in front of me, so YMMV, you should man ld to make sure those flags are correct.

HTH,

Robert Boehne



Kip Warner <kip@xxxxxxxxxxxxxx> wrote:

>Hey lists,
>
>Sorry for posting on both autoconf and automake lists. I wasn't sure
>which one would be more appropriate for this problem.
>
>I know this has come up before, judging by the archives, but I cannot
>figure out the best way to have my executable statically link against
>certain dependencies. This is needed because it executes off of optical
>media and I cannot always guarantee that the user's runtime environment
>will have the needed dependencies and shipping them shared would be a
>maintenance nightmare.
>
>The dynamic dependencies, according to objdump, are the following...
>
>Dynamic Section:
>  NEEDED               libgio-2.0.so.0
>  NEEDED               libgobject-2.0.so.0
>  NEEDED               libglib-2.0.so.0
>  NEEDED               libzzip-0.so.13
>  NEEDED               libpng12.so.0
>  NEEDED               libstdc++.so.6
>  NEEDED               libm.so.6
>  NEEDED               libgcc_s.so.1
>  NEEDED               libpthread.so.0
>  NEEDED               libc.so.6
>
>libc, pthreads, the C++ runtime, etc., are safe to assume are
>available,
>but the rest I'd like to statically link against. Actually, I'd prefer
>to statically link against everything that I can if possible. But the
>ones for certain I know I should be able to statically link against are
>at least libzzip and libpng.
>
>I know there a number of different approaches to doing this, but from
>the pieces scattered in various places, it was difficult to determine
>the most reliable and recommended approach. For instance, I've tried
>'myproduct_LDADD = $(LIBINTL) -static', but objdump still reports all
>of
>the above dynamic dependencies, so maybe it's not doing what I thought
>it was suppose to do.
>
>This is my configure.ac:
>  <http://rod.gs/Jwo>
>
>This is my Makefile.am:
>  <http://rod.gs/Lwo>
>
>Any help appreciated.
>
>Respectfully,
>
>-- 
>Kip Warner -- Software Engineer
>OpenPGP encrypted/signed mail preferred
>http://www.thevertigo.com
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Autoconf mailing list
>Autoconf@xxxxxxx
>https://lists.gnu.org/mailman/listinfo/autoconf

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
https://lists.gnu.org/mailman/listinfo/autoconf




[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux