libtool
[Top][All Lists]
Advanced

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

Re: Sticky --disable-shared


From: Ralf Wildenhues
Subject: Re: Sticky --disable-shared
Date: Thu, 25 Sep 2008 07:46:12 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

* Alessandro Vesely wrote on Wed, Sep 24, 2008 at 11:53:55AM CEST:
> Ralf Wildenhues wrote:
>>
>> Most likely somebody putting libraries in *_LDFLAGS rather than *_LDADD
>> (for programs) or *_LIBADD (for libraries).
>
> In part. For gnutls, the external (possibly static) libraries came  
> before convenience archives on the command line. I have to quote that  
> line:
>
> /bin/sh ../libtool --tag=CC   --mode=link gcc -std=gnu99 -pipe  
> -I/usr/local/include -march=nocona -O2 -Wno-pointer-sign -march=nocona 
> -O2 -o psktool psk-gaa.o psk.o ../lib/libgnutls.la -L/usr/local/lib 
> -lgcrypt -lgpg-error  ../gl/libgnu.la ../lgl/liblgnu.la
>
> The above failed. It worked after reordering it like so:
>
> /bin/sh ../libtool --tag=CC --mode=link gcc -L/usr/local/lib -std=gnu99 
> -pipe -I/usr/local/include -march=nocona -O2 -Wno-pointer-sign 
> -march=nocona -O2 -o .libs/psktool psk-gaa.o psk.o  
> ../lib/.libs/libgnutls.so ../gl/.libs/libgnu.a ../lgl/.libs/liblgnu.a  
> -lgcrypt -lgpg-error

You should not ever need to add paths that contains .libs to the libtool
input line.

Since you only post input lines but not the output of them, I can
only guess that this should have worked as well, right?

/bin/sh ../libtool --tag=CC   --mode=link gcc -std=gnu99 -pipe  
-I/usr/local/include -march=nocona -O2 -Wno-pointer-sign -march=nocona -O2 -o 
psktool psk-gaa.o psk.o ../lib/libgnutls.la -L/usr/local/lib ../gl/libgnu.la 
../lgl/liblgnu.la -lgcrypt -lgpg-error

If yes, find out where -lgcrypt -lgpg-error came from.  They need to be
in LDADD not LDFLAGS.  Or they can be listed as deps when creating the
convenience archive.

> Perhaps, since libtool takes care of distinguishing between convenience 
> archives and installed libraries, it could reorder them correctly. 

Well, you are not giving libtool the information that the code from the
convenience archives needs these libraries, no?

>> Then, consider installing it under a different
>> prefix, and all packages that need it, too.
>
> They came naturally in that way, stock debian packages in /usr/lib and  
> /usr/bin, newer versions in /usr/local/*.

OK.

>> If the .la files are
>> installed, libtool will add suitable run paths for you, otherwise you
>> may have to do that yourself.
>
> Yes, .la's are installed. However, ldd shows no hardcoded path (except  
> /lib64/ld-linux-x86-64.so.2.) Should I have set hardcode_shlibpath_var  
> to get that? I have no LD_* env vars, and usually need to run ldconfig  
> manually after installing home built shared libraries in unusual places.

First, ldd is useless for this, use objdump -p.  Second, your runtime
linker might have /usr/local/lib or /usr/local/lib64 in its default
search path (find out! look at ldconfig manpage).  If it doesn't, then
I really need to see the link command lines (input plus output) and
output of './libtool --config' of what you think should have added the
run paths but hasn't.

Cheers,
Ralf




reply via email to

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