Thanks for the comments. Good reading. Haven't tested anything yet.

> > LD_LIBRARY_PATH does NOT contain the libaceclnt.so (third party .so lib).
> > LD_RUN_PATH is empty.
> 
> Where exactly is libaceclnt.so on the two machines?  I'd guess
> /usr/local/lib...

They're over in PREFIX/../acelib/. i.e. parallel to custom Perl libs.

> There are *significant* differences between the two versions - one is built 
> with shrplib, one without, and the libpths are different - specifically the 
> working one includes /usr/local/lib, and the broken one doesn't.

I don't think that matters. These libs aren't in /usr/local/lib.
 
> He can verify this by using 'ldd' and 'dump -Lv' on the various perl, 
> libperl.so and module .so files and looking at the dependencies.  Another 
> trick is to do 'LD_DEBUG=libs perl sometestscript' which will display the 
> library search processing.

Very interesting... Will investigate and report back.

> > As for a fix, he can hack the module Makefile.PL - I'm not sure which would 
> work best, adding -R<library path> to LIBS, or using
>      dynamic_lib  => { OTHERLDFLAGS => '-R<library path>' }
> Whatever, he should use 'dump -Lv' on the resulting .so and check that 
> libaceclnt.so appears in the NEEDED section, and the directory it is in 
> appears in RUNPATH/RPATH.

More good stuff. I think, if I understand you correctly, the problem is the 
Makefile.PL was hardcoded with "-L" and not "-R", so it breaks on the 64bit 
box built with Sun's compiler, but works fine on pretty much any gcc-built 
system. I'm thinking along the lines of patching the Makefile.PL to do the 
right thing a la some suncc-specific hinting.

BTW, the module in question is the CPAN module Authen::ACE4. The Makefile.PL
is a bit different from your standard MakeMaker fare, but it's not that
complicated.

Please thank your "guru".

Mike

---------------------------------------------
http://www.valuenet.net


Reply via email to