Hi,
Try force reinstall these two modules in the system where are getting this error message.
DBI,
DBD::mysql
KNOWN PROBLEMS
1)If Perl was compiled with gcc or egcs, but MySQL was compiled with another compiler or on another system, an error message like this is very likely when running ``Make test'': t/00base............install_driver(mysql) failed: Can't load
'../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: _umoddi3
at /usr/local/perl-5.005/lib/5.005/i586-linux-thread/DynaLoader.pm
line 168.
This means, that your linker doesn't include libgcc.a. You have the following options:
The solution is telling the linker to use libgcc. Run
gcc --print-libgcc-file
to determine the exact location of libgcc.a or for older versions of gcc
gcc -v
to determine the directory. If you know the directory, add a
-L<directory> -lgcc
2)There are known problems with shared versions of libmysqlclient, at least on some Linux boxes. If you receive an error message similar to install_driver(mysql) failed: Can't load
'/usr/lib/perl5/site_perl/i586-linux/auto/DBD/mysql/mysql.so'
for module DBD::mysql: File not found at
/usr/lib/perl5/i586-linux/5.00404/DynaLoader.pm line 166
then this error message can be misleading: It's not mysql.so that fails being loaded, but libmysqlclient.so! The usual problem is that this file is located in a directory like
/usr/lib/mysql
where the linker doesn't look for it.
The best workaround is using a statically linked mysqlclient library, for example
/usr/lib/mysql/libmysqlclient.a
You force linking against this file by replacing
-L/usr/lib/mysql -lmysqlclient
with
/usr/lib/mysql/libmysqlclient.a
All is well. I learn by answering your questions...