libtool
[Top][All Lists]
Advanced

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

Re: static/shared libraries on AIX


From: mcnichol
Subject: Re: static/shared libraries on AIX
Date: Thu, 26 Apr 2001 08:31:02 -0500

> From: address@hidden
> 
> On Tue, Apr 17, 2001 at 02:51:08AM +0100, Gary V. Vaughan wrote:
> > > AIX by default wants it's shared libraries called lib<name>.a.
> > > So libltdl.a is created (as a symlink to libltdl.so.3.0.0).
> > > The Makefile then wants to create a non-shared library also called
> > > libltdl.a. This predictably fails as follows:
> > > ar cru .libs/libltdl.a  ltdl.o
> > > ar: 0707-108 File .libs/libltdl.a is not an archive file.
> > 
> > AIX is fast catching Ultrix in my league table of `most gratuitously 
> > different Unix'...
> > 
> > > My changes get around this problem in two ways:
> > >
> > > - When building libtool with run-time-linking enabled, we no longer need
> > >   to name our shared libraries lib<name>.a.  lib<name>.so is used instead,
> > >   so the non-shared libltdl.a can be created without any collision.
> > >
> > > - When building libtool without run-time-linking, my changes do still
> > > create a lib<name>.a.  However, it is an actual archive containing the
> > > shared object (just like the quirky way the rest of AIX does it).
> > >   What you end up with is a libltdl.a that contains both the shared and 
> > > the
> > >   non-shared object.  This is not really what was intended, and would
> > > likely cause problems if you ever really needed to use the non-shared
> > > object, but for the most part it seems to work.  The only other thing I 
> > > can
> > > think to do is not bulid the non-shared object in this case.
> 
> Can we decide to:
>   1. On AIX systems that support run-time-linking, make it the
>      *default* so lib<name>.a is "static" and lib<name>.so is
>      shared. With this, "-brtl" would be "inserted" automatically
>      into the compile/link phases.

I'm not sure if this would work or not.  For run-time-linking to work on
AIX the "program" must be linked with -brtl, and the shared libraries
must link with -G (shared libs can be linked with -brtl and -G, but
-G MUST follow the last -brtl flags).

>   2. On AIX systems that do not support run-time-linking, support
>      only shared libraries (so, lib<name>.a is shared and there is
>      no lib<name>.so).

Yup... That's what it does now.

> 
> I'm trying to fix the remaining 'make check' failures on AIX and
> knowing what to do about shared/static would certainly help. While the
> above doesn't expose the full "robustness" of the AIX linker, methinks
> it good enough.
> 
> -- 
> albert chin (address@hidden)
> 

Dan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]