[BioLib-dev] installation - perl.h

Joel Martin j_martin at lbl.gov
Sun Apr 26 20:22:29 UTC 2009


On Sun, Apr 26, 2009 at 04:47:52PM +0200, Pjotr Prins wrote:
> Alright. I have narrowed it down - and it is kinda weird. When you
> use a different Perl by overriding PERL_EXECUTABLE the dynamic
> library fails to load (it gets found, as can be seen with export
> PERL_DL_DEBUG=1 before running a test). It appears to be a mixup of
> perl binaries not matching libraries causing the problem.

which dynamic library?  cmake has always picked up /jgi/tools/bin/perl
for me.
 
> Don't you love dynamically linked libraries?
> 
> I'll resolve that soon. Most people won't encounter this as standard
> Perl installations just work.
> 
> BTW could it be that perllib is statically linked against other XS
> modules? That would not show with ldd. The XS stack methods have to
> live somewhere and I would bet it is in perllib. But maybe I am
> wrong, I haven't checked.

Yeah, it has to come from somewhere, 

/usr/bin/perl ( debian default  ) and /jgi/tools/bin/perl both load it at
startup... both have basically the same strace output. except location of
libraries they're loading of course.

I re-maked a few of the XS modules and the linking line is always some version of
cc  -shared XS.o  -o blib/arch/auto/JSON/XS/XS.so

maybe they use DynaLoader to load libperl.so ?, some version of
 require DynaLoader;
 @ISA = qw(DynaLoader);

is in most of them, though not in JSON::XS ( well, grepping didn't find Dyna ),

Starting clean after

cmake -DCMAKE_INSTALL_PREFIX=/scratch/j_martin/biotrash -DSTADEN_LIB:BOOLEAN=TRUE -DBUILD_PERL:BOOLEAN=TRUE .
make
make test ( passes )
make install
perl -Mbiolib::staden_io_lib -e ''
(no errors)

but I removed linking to libperl.so  

ldd /jgi/tools/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/staden_io_lib.so
  libbiolib_staden_io_lib-0.0.4.so => /scratch/j_martin/biotrash/lib/libbiolib_staden_io_lib-0.0.4.so (0x00002ae0641c6000)
  libz.so.1 => /usr/lib/libz.so.1 (0x00002ae064349000)
  libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00002ae06445f000)
  libm.so.6 => /lib/libm.so.6 (0x00002ae06465e000)
  libc.so.6 => /lib/libc.so.6 (0x00002ae0647e0000)
  libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002ae064a1d000)
  /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)

Joel

> Pj.
> 
> _______________________________________________
> BioLib-dev mailing list
> BioLib-dev at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/biolib-dev



More information about the BioLib-dev mailing list