Spec-Zone .ru
спецификации, руководства, описания, API
|
If Perl reports that it cannot find the ../mysql/mysql.so
module, the problem is
probably that Perl cannot locate the libmysqlclient.so
shared library. You should
be able to fix this problem by one of the following methods:
Copy libmysqlclient.so
to the directory where your
other shared libraries are located (probably /usr/lib
or /lib
).
Modify the -L
options used to compile DBD::mysql
to reflect the actual location of libmysqlclient.so
.
On Linux, you can add the path name of the directory where libmysqlclient.so
is located to the /etc/ld.so.conf
file.
Add the path
name of the directory where libmysqlclient.so
is located to the LD_RUN_PATH
environment variable. Some systems use LD_LIBRARY_PATH
instead.
Note that you may also need to modify the -L
options if there are other libraries
that the linker fails to find. For example, if the linker cannot find libc
because
it is in /lib
and the link command specifies -L/usr/lib
, change the -L
option to -L/lib
or add -L/lib
to the existing link command.
If you get the following errors from DBD::mysql
, you are probably using gcc (or using an old binary compiled with gcc):
/usr/bin/perl: can't resolve symbol '__moddi3'/usr/bin/perl: can't resolve symbol '__divdi3'
Add -L/usr/lib/gcc-lib/... -lgcc
to the link command when the mysql.so
library gets built (check the output from make
for mysql.so
when you compile the Perl client). The -L
option should specify the path name of the directory where libgcc.a
is located on
your system.
Another cause of this problem may be that Perl and MySQL are not both compiled with gcc. In this case, you can solve the mismatch by compiling both with gcc.