DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) perl-support-problems

Info Catalog (mysql.info) activestate-perl (mysql.info) perl-support
 
 2.13.3 Problems Using the Perl `DBI'/`DBD' Interface
 ----------------------------------------------------
 
 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:
 
    * Compile the `DBD::mysql' distribution with `perl Makefile.PL
      -static -config' rather than `perl Makefile.PL'.
 
    * 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 pathname of the directory where
      `libmysqlclient.so' is located to the `/etc/ld.so.conf' file.
 
    * Add the pathname 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 pathname of the directory where `libgcc.a' is located on
 your system.
 
 Another cause of this problem may be that Perl and MySQL aren't both
 compiled with `gcc'. In this case, you can solve the mismatch by
 compiling both with `gcc'.
 
 You may see the following error from `DBD::mysql' when you run the
 tests:
 
      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:
      uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.
 
 This means that you need to include the -lz compression library on the
 link line. That can be done by changing the following line in the file
 `lib/DBD/mysql/Install.pm':
 
      $sysliblist .= " -lm";
 
 Change that line to:
 
      $sysliblist .= " -lm -lz";
 
 After this, you _must_ run `make realclean' and then proceed with the
 installation from the beginning.
 
 If you want to install DBI on SCO, you have to edit the `Makefile' in
 DBI-XXX and each subdirectory. Note that the following assumes `gcc'
 2.95.2 or newer:
 
      OLD:                                  NEW:
      CC = cc                               CC = gcc
      CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
      CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =
 
      LD = ld                               LD = gcc -G -fpic
      LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
      LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib
 
      LD = ld                               LD = gcc -G -fpic
      OPTIMISE = -Od                        OPTIMISE = -O1
 
      OLD:
      CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include
 
      NEW:
      CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
 
 These changes are necessary because the Perl dynaloader does not load
 the `DBI' modules if they were compiled with `icc' or `cc'.
 
 If you want to use the Perl module on a system that doesn't support
 dynamic linking (such as SCO), you can generate a static version of
 Perl that includes `DBI' and `DBD::mysql'. The way this works is that
 you generate a version of Perl with the `DBI' code linked in and
 install it on top of your current Perl. Then you use that to build a
 version of Perl that additionally has the `DBD' code linked in, and
 install that.
 
 On SCO, you must have the following environment variables set:
 
      LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
 
 Or:
 
      LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
          /usr/progressive/lib:/usr/skunk/lib
      LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
          /usr/progressive/lib:/usr/skunk/lib
      MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
          /usr/skunk/man:
 
 First, create a Perl that includes a statically linked `DBI' module by
 running these commands in the directory where your `DBI' distribution is
 located:
 
      shell> perl Makefile.PL -static -config
      shell> make
      shell> make install
      shell> make perl
 
 Then you must install the new Perl. The output of `make perl' indicates
 the exact `make' command you need to execute to perform the
 installation. On SCO, this is `make -f Makefile.aperl inst_perl
 MAP_TARGET=perl'.
 
 Next, use the just-created Perl to create another Perl that also
 includes a statically linked `DBD::mysql' by running these commands in
 the directory where your `DBD::mysql' distribution is located:
 
      shell> perl Makefile.PL -static -config
      shell> make
      shell> make install
      shell> make perl
 
 Finally, you should install this new Perl. Again, the output of `make
 perl' indicates the command to use.
 
Info Catalog (mysql.info) activestate-perl (mysql.info) perl-support
automatically generated byinfo2html