运用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模块,你可以产生网罗DBI和DBD-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的输入指出运用的饬令。
版权声明:
原创作品,答应转载,转载时请务必以超链接体式格局标明文章 原始理由 、作者信息和本声明。否则将穷究法律责任。

浙公网安备 33010602011771号