ld ---export--all --exclude-libs,?

Corinna Vinschen vinschen@redhat.com
Wed Nov 14 16:45:00 GMT 2001

On Wed, Nov 21, 2001 at 12:45:08PM -0500, Charles Wilson wrote:
> Corinna Vinschen wrote:
> > Isn't the functionality you're searching for already in ld given by
> > the --no-whole-archive options?
> > 
> >   gcc -shared -o cygfoo.dll $(OBJ)
> >       -Wl,--out-implib,libfoo.dll.a
> >       -Wl,--no-whole-archive -lbar -lbaz
> > 
> > Or am I missing the point?
> the problem is, --no-whole-archive applies to EVERY library, even 
> convenience libraries.  For instance, a common autotools idiom is to 
> create various convenience libraries libsubunit1.a and libsubunit2.a. 
> These archives are intended to be included in the eventual .so (.dll) 
> and the internal symbols of libsubunit*.a are INTENDED to be exported 
> from that .so.
> --no-whole-archive makes this idiom impossible; it is not granular 
> enough.  Ralf's solution removes the whole purpose of the idiom -- 
> what's the use of a "convenience" library if you use --no-whole-archive 
> and must then explicitly export every .o contained within the 
> "convenience" library?  You're better off not creating the "convenience" 
> library at all, and just explicitly adding the various .o files to your 
> link command line.

But isn't that the purpose of --whole-archive?  In the above
example I can create the static libs libfoo1.a and libfoo2.a
from $(OBJ) and then call

	gcc -shared -o cygfoo.dll
	    -Wl,--whole-archive libfoo1.a libfoo2.a
	    -Wl,--no-whole-archive -lbar -lbaz


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin@cygwin.com
Red Hat, Inc.

More information about the Cygwin-apps mailing list