DBI.pm and libc.so.6 (Linux)
am 29.08.2007 20:16:29 von tonyDoes DBI.pm's DBI.so rely on a particular version of libc.so.6?
It builds (apparently) successfully but when I run "make test" I get failures
saying "Error: Can't load '/home/tony/dbi-1.58/blib/arch/auto/DBI/DBI.so'
for module DBI: /home/tony/dbi-1.58/blib/arch/auto/DBI/DBI.so: cannot open
shared object file: No such file or directory
at /scratchbox/tools/lib/perl5/5.8.4/i686-linux-thread-multi/Dy naLoader.pm
line 230"
Running "strace make test", it appears to be trying and failing to load
libc.so.6 from all over the filesystem, for example:
------------------------------------------------------------ ---------------------------------------
open("/scratchbox/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/host_usr/lib/tls/i686/mmx/cmov/libc.so.6", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat64("/host_usr/lib/tls/i686/mmx/cmov", 0xbf8633a8) = -1 ENOENT (No such
file or directory)
open("/host_usr/lib/tls/i686/mmx/libc.so.6", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/host_usr/lib/tls/i686/mmx", 0xbf8633a8) = -1 ENOENT (No such file or
directory)
open("/host_usr/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/host_usr/lib/tls/i686/cmov", 0xbf8633a8) = -1 ENOENT (No such file or
directory)
open("/host_usr/lib/tls/i686/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/host_usr/lib/tls/i686", 0xbf8633a8) = -1 ENOENT (No such file or
directory)
open("/host_usr/lib/tls/mmx/cmov/libc.so.6", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/host_usr/lib/tls/mmx/cmov", 0xbf8633a8) = -1 ENOENT (No such file or
directory)
open("/host_usr/lib/tls/mmx/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
directory)
------------------------------------------------------------ ---------------------------------------------
Since libc.so.6 exists in /lib, my best guess is that perhaps DBI doesn't like
the particular version of this library (it's symlinked to libc-2.3.6.so, as
opposed to libc-2.5.so on a system where DBI works.) so it's hunting for a
version it can use (though why it's going through those paths is a mystery).
Is this my problem or is it something else?
If it is the problem, was there an older version of DBI that can use
libc-2.3.6.so? (I've tried building a few older ones with no success though)
or do I need to build DBI statically linked against a newer version of the
library? (It's for public distribution, so I can't just put a newer one in
for dynamic linking.)
Thanks.
--
Tony Green
Ipswich, Suffolk, England
http://www.beermad.org.uk
http://no2id-ip.web-brewer.co.uk
** This message is digitally signed. If your email client is unable to read
digital signatures, you may see an attachment that you cannot open. See
http://www.gnupg.org/(en)/documentation/faqs.html for more information.
You can validate my PGP key from my website: http://www.beermad.org.uk/
* No Micro$oft products were used in the generation of this communication