Re: make test with a program that dlopen()s a shared lib "peer"

2011-03-29 Thread Dan Nicholson
On Tue, Mar 29, 2011 at 4:46 AM, Jack Andrews  wrote:
> Hi Eric,
>
> That make perfect sense -- only thing is it doesn't seem to work for me:
>
> ~/effbiae/core(ENV)]$ echo $LD_LIBRARY_PATH
> /home/jack/effbiae/core/.libs
> ~/effbiae/core(ENV)]$ ./jconsole
>   'hi'
> hi
> ~/effbiae/core(ENV)]$ export LD_LIBRARY_PATH=
> ~/effbiae/core(ENV)]$ echo $LD_LIBRARY_PATH
>
> ~/effbiae/core(ENV)]$ libtool --mode=execute ./jconsole
> Load library libj.so failed.

I'm guessing your file layout, but try "./libtool --mode=execute
-dlopen libj.la ./jconsole". libtool will build up LD_LIBRARY_PATH in
that case. If the program had been linked directly to libj.so, then it
would have rpath entries pointing to the in-tree directory. Look at
"./libtool --help --mode=execute".

--
Dan

___
http://lists.gnu.org/mailman/listinfo/libtool


Re: make test with a program that dlopen()s a shared lib "peer"

2011-03-29 Thread Jack Andrews
Hi Eric,

That make perfect sense -- only thing is it doesn't seem to work for me:

~/effbiae/core(ENV)]$ echo $LD_LIBRARY_PATH
/home/jack/effbiae/core/.libs
~/effbiae/core(ENV)]$ ./jconsole
   'hi'
hi
~/effbiae/core(ENV)]$ export LD_LIBRARY_PATH=
~/effbiae/core(ENV)]$ echo $LD_LIBRARY_PATH

~/effbiae/core(ENV)]$ libtool --mode=execute ./jconsole
Load library libj.so failed.


Thanks,


Jack.

On Tue, Mar 29, 2011 at 4:05 AM, Eric Blake  wrote:
> On 03/27/2011 05:46 AM, Jack Andrews wrote:
>> i want to use the usual sequence of
>>
>>   autoreconf --install
>>   ./configure
>>   make
>>   make test
>>   make install
>>
>> but my program dlopen()s a lib which
>> i find here:
>>    .libs/libj.so
>>
>> i've read that shared objects are hidden in
>> .libs for a reason and that they should be
>> installed prior to use.
>>
>> if this is the case, how can i run tests
>> "legally", before installing the .libs/libj.so ?
>
> If I understand correctly,
>
> libtool --mode=execute path/to/uninstalled/program
>
> will do what you want - libtool will massage PATH behind the scenes
> before spawning the wrapped uninstalled program so that it will
> correctly pick up the .libs/*.so files in preference to anything installed.
>
> --
> Eric Blake   ebl...@redhat.com    +1-801-349-2682
> Libvirt virtualization library http://libvirt.org
>
>

___
http://lists.gnu.org/mailman/listinfo/libtool


Re: libtool relinks all shared libraries when "make install" is performed

2011-03-29 Thread Ralf Wildenhues
Hello Markus,

* Markus Franke wrote on Wed, Mar 23, 2011 at 05:18:53PM CET:
> we have a large C++ project containing of several modules which each get 
> compiled into seperate shared libraries. Our directory structure looks 
> somehow as follows:
[...]

> When performing the "make install" step all the libraries and binaries get 
> installed to our prefix directory "/opt/kmt". This currently takes very 
> long (~20 minutes) as libtool relinks all libraries.
[...]

Wow.  That's terrible.

> How can I avoid this additional relinking step during "make install"?

Generally, --enable-fast-install should be the switch to avoid it.
However, it is not possible to do on every system, and not fully
optimized on all systems where it could be made to work.  Unfortunately,
GNU/Linux is one of the latter ones where Libtool still needs a bit of
work.

Thanks for the bug report,
Ralf

___
http://lists.gnu.org/mailman/listinfo/libtool