运用PerlDBI/DBD接口的成绩

 作者:天极软件 前导发端:天极软件

假如 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的输入指出运用的饬令。





版权声明: 原创作品,答应转载,转载时请务必以超链接体式格局标明文章 原始理由 、作者信息和本声明。否则将穷究法律责任。

posted @ 2011-03-07 17:57  蓝色的天空III  阅读(283)  评论(0)    收藏  举报