Hi,
I'm having trouble building the DBD::DB2 driver (v0.75), in
Turbolinux server 6.5, using DB2 V7.1 (Enterprise Edition for Linux, with
Application Client stuff selected), DBI v1.19, and perl 5.00503.
A quick summary of my problem is this error message during an attempt to
connect a database handle:-
"perl: error in loading shared libraries:
/usr/lib/perl5/site_perl/5.005/i386-linux/auto/DBD/DB2/DB2.so: undefined
symbol: SQLAllocHandle"
The installation went fine in the Makefile.PL and "make" stages, but "make
test" gave this feedback:
[root@ns2 DBD-DB2-0.75]# make test
make[1]: Entering directory `/tmp/DBD-DB2-0.75/Constants'
make[1]: Leaving directory `/tmp/DBD-DB2-0.75/Constants'
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib
-I/usr/lib/perl5/5.00503/i386-linux -I/usr/lib/perl5/5.00503 -e 'use
Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/base..............install_driver(DB2) failed: Can't load
'blib/arch/auto/DBD/DB2/DB2.so' for module DBD::DB2:
blib/arch/auto/DBD/DB2/DB2.so: undefined symbol: SQLTables at
/usr/lib/perl5/5.00503/i386-linux/DynaLoader.pm line 169.
at (eval 1) line 3
Perhaps a required shared library or dll isn't installed where expected
at t/base.t line 16
dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 4-5
Failed 2/5 tests, 60.00% okay
t/main..............ok
Failed Test Status Wstat Total Fail Failed List of failed
-------------------------------------------------------------------------------
t/base.t 255 65280 5 2 40.00% 4-5
Failed 1/2 test scripts, 50.00% okay. 2/6 subtests failed, 66.67% okay.
make: *** [test_dynamic] Error 29
When i investigate the DynaLoader.pm file at the error line mentioned, I
found this potentially enlightening message:
...
# Many dynamic extension loading problems will appear to come from
# this section of code: XYZ failed at line 123 of DynaLoader.pm.
# Often these errors are actually occurring in the initialisation
# C code of the extension XS file. Perl reports the error as being
# in this perl code simply because this was the last perl code
# it executed.
my $libref = dl_load_file($file, $module->dl_load_flags) or
croak("Can't load '$file' for module $module: ".dl_error()."\n");
...
But, I'm not a c coder so I don't know what to do about this.
If someone knows any special trick I should use (eg. compiling from a
special directory, being a particular user, etc.) I'd very much appreciate
the help- I've invested months setting up a new server especially to test
DB2, and now I can't achieve the one goal I had in mind.
Yours,
Akira