Chinaunix

标题: mysqlhotcopy出错与DBD::mysql有关[解决] [打印本页]

作者: 权老实    时间: 2007-08-16 09:58
标题: mysqlhotcopy出错与DBD::mysql有关[解决]
mysql-5.0.41源代码安装:
#./mysqlhotcopy abc /home/123/
mysqlhotcopy: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql/mysql.so: undefined symbol: mysql_server_init

什么意思??????

[ 本帖最后由 权老实 于 2007-8-17 23:28 编辑 ]
作者: 权老实    时间: 2007-08-16 11:04
刚查了原来的笔记:
DBD::mysql 是也是源代码安装
DBD-MYSQL-4.00.4.tar.gz
$ perl Makefile.PL --cflags=-I/usr/local/mysql/include/mysql
--libs=-L/usr/local/mysql/lib/mysql --mysql_config=/usr/local/mysql/bin/mysql_config
; make; make test  make install;
不过,在make test 时好像有点小错误:
install_driver(mysql) failed: Can't load '/home/cbs/SF/DBD-mysql-4.004/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: /home/cbs/SF/DBD-mysql-4.004/blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: mysql_fetch_field at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230

“filed 26/28 test scripts
   415/418 subtest faild
make: XXXXXX [test_dyamic]错误????
难道是它?????

[ 本帖最后由 权老实 于 2007-8-16 11:06 编辑 ]
作者: 权老实    时间: 2007-08-16 19:50
重新安装DBI DBD::mysql
还是同样题
./mysqlhotcopy abc /home/123
mysqlhotcopy: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql/mysql.so: undefined symbol: mysql_server_init

???????
作者: yejr    时间: 2007-08-16 20:59
要安装dbd-mysql的lib包,搜一下光盘,或者去rpmfind.net找
作者: 权老实    时间: 2007-08-16 22:21
是这个包吗?libdbi-dbd-mysql?
我的mysql 是用源代码安的,还需这个lib吗??
作者: 权老实    时间: 2007-08-16 22:52
再次重新编译安装DBD-mysql时出错:
t/utf8...............install_driver(mysql) failed: Can't load '/root/.cpan/build/DBD-mysql-4.005-K7TADK/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.15: 无法打开共享对象文件: 没有那个文件或目录 at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.

usr/local/mysql/lib/mysql/libmysqlclient.so.15与路径有关吧?
请教!!!!!!
作者: 权老实    时间: 2007-08-17 15:24
查install.html
2)
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

to the list of C compiler flags. Configuration. Linker flags.
---------------------------

$gcc-print-libgcc-file
/usr/lib/gcc/i386-redhat-linux/4.1.1/libgcc.a

$perl Makefile.PL --libs="-L/usr/local/mysql/lib/mysql " --cflags=-I/usr/local/mysql/include/mysql  --testhost=127.0.0.1 --mysql_config=/usr/local/mysql/bin/mysql_config
如何指定libgcc.a???????
作者: yejr    时间: 2007-08-17 22:12
都用rpm包上装吧,多省心,或者用apt/yum之类的
作者: 权老实    时间: 2007-08-17 22:59
原帖由 yejr 于 2007-8-17 22:12 发表
都用rpm包上装吧,多省心,或者用apt/yum之类的




说的极是,以后不在自己编译源代码啦!!
作者: 权老实    时间: 2007-08-17 23:26
已解决,现 说一下所遇到的情况:(centos 源码安装的mysql )
1)如在make 阶段出错
   (1)类、、、、make: *** [dbdimp.o] 错误 1
多半是库文件的问题,(--cflags=-I/usr/local/mysql/include/mysq 细查,少个“y"
   (2)类 LD_RUN_PATH="/usr/lib/mysql:/lib:/usr/lib" gcc
    -o blib/arch/auto/DBD/mysql/mysql.so  -shared
    -L/usr/local/lib dbdimp.o mysql.o -L/usr/lib/mysql
    -lmysqlclient -lm -L/usr/lib/gcc-lib/i386-redhat-linux/2.96
    -lgcc -lz
  /usr/bin/ld: cannot find -lz
  collect2: ld returned 1 exit status
  make: *** [blib/arch/auto/DBD/mysql/mysql.so] Error 1
  与压缩包有关。可用 ldconfig -p | grep libz
                     ldconfig -p | grep libgz
   查找,如有并指定路径!否则安装 libz-devel/ibgz-devel/zlib-devel/    gzlib-devel
2)在make test 阶段出错:
  (1)类: 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
  与 /usr/lib/mysql/libmysqlclient.a有关 (cp libmysqlclient.a /us/lib)
  (2)类: 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.
  与libgcc.a 有关 (cp /usr/lib/gcc/i386-redhat-linux/4.1.1/libgcc.a /usr/local/lib/
  (3) 类:Can't load  libmysqlclient.so.15 、、、、
     (cp libmysqlclient.so.15 /us/lib)
----------------------------------------
$perl Makefile.PL  --libs="-L/usr/local/mysql/lib/mysql -lmysqlclient -L/usr/lib -lz " --cflags=-I/usr/local/mysql/include/mysql  --mysql_config=/usr/local/mysql/bin/mysql_config  --testhost=127.0.0.1--testsocket=/usr/local/mysql/tmp/mysql.sock --testdb=test --testuser=abc --testpassword=abc
------------------
$
; make; make test ;sudo  make install;
-------------------------------
参考:
http://dev.mysql.com/doc/refman/5.0/en/perl-support-problems.html
INSTALL.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2