Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103549185
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-05-26 09:10:18

 作者:天极软件 来源:天极软件

如果 Perl 报告它不能找到../mysql/mysql.so模块,那么问题可能是该Perl不能找到共享库文件“libmysqlclient.so”

你可用下列任何一个方法修正它这:

  • perl Makefile.PL -static而非perl Makefile.PL译Msql-Mysql-modules分发。
  • 拷贝libmysqlclient.so到其他共享库文件所在的目录(可能是“/usr/lib”“/lib”)。
  • Linux上,你可以把libmysqlclient.so所在目录的路径名加到“/etc/ld.so.conf”文件中。
  • libmysqlclient.so所在目录的路径名加到LD_RUN_PATH环境变量中。

如果你从DBD-mysql得到下列错误,你可能正在使用gcc(或使用一个旧的用gcc编译的二进制代码):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

“mysql.so”库文件被构造时候,为链接命令加上-L/usr/lib/gcc-lib/... -lgcc(当你编译Perl客户时检查针对“mysql.so”make输出)。-L选项应该指定“libgcc.a”在你系统上所在目录的路径名。

这个问题的另一个原因可能是Perl和MySQL都不是用gcc编译的。在这种情况下,你可以都用gcc编译以解决不匹配。

如果你想要在一个不支持动态链接(象SCO那样)的系统上使用Perl模块,你可以产生包括DBIDBD-mysql的Perl的一个静态版本。这种运行方法是你生成一个链接了DBI代码的Perl版本并在最新的Perl上安装它,然后你使用它来构造附加链接了DBD代码的Perl版本,并且安装它。

在 SCO 上,你必须有下列环境变量设置:

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
或
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:

首先, 在DBI分发所在目录下运行下列命令,创造包括一个静态链接的Perl DBI

shell> perl Makefile.PL LINKTYPE=static
shell> make
shell> make install
shell> make perl

然后你必须安装新的Perl。make perl的输出将显示正确的你需要执行施行安装的make的命令。在SCO上,是make -f Makefile.aperl inst_perl MAP_TARGET=perl.

接下来,在Msql-Mysql-modules分发所在目录下,使用刚才创建的Perl来创建同样包括一个静态链接的PerlDBD::mysql的另一个Perl:

shell> perl Makefile.PL LINKTYPE=static 
shell> make 
shell> make install 
shell> make perl

最后, 你应该安装这个新的Perl。而且,make perl的输出指出使用的命令。

阅读(1166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~