Installer ActiveState Perl sur Windows
<<<
Problèmes lors de l'utilisation des interfaces Perl DBI et DBD Installer MySQL
>>>

2.7 Commentaires sur l'installation de Perl
2 Installer MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Installer Perl sur Unix
Installer ActiveState Perl sur Windows
->Problèmes lors de l'utilisation des interfaces Perl DBI et DBD

2.7.3 Problèmes lors de l'utilisation des interfaces Perl DBI et DBD

Si Perl vous informe qu'il ne peut trouver le module ../mysql/mysql.so , il se trouve probablement que Perl n'arrive pas à trouver la bibliothèque partagée libmysqlclient.so .

Vous pouvez corriger cela en suivant l'une des méthodes suivantes :
  • Compilez la distribution Msql-Mysql-modules avec perl Makefile.PL -static -config au lieu de perl Makefile.PL .
  • Copiez libmysqlclient.so dans le dossier où se situent vos autres bibliothèques partagées (souvent /usr/lib ou /lib ).
  • Modifiez l'option -L utilisée pour compiler DBD::mysql pour refléter le chemin correct de libmysqlclient.so .
  • Sous Linux vous pouvez ajouter le chemin vers le dossier dans lequel se trouve libmysqlclient.so au fichier /etc/ld.so.conf .
  • Ajoutez le chemin complet vers le dossier où se situe libmysqlclient.so à la variable d'environnement LD_RUN_PATH .
Notez que vous aurez aussi besoin de modifier les options -L s'il y a d'autres bibliothèques que le linker ne peut trouver. Par exemple, si le linker ne peut trouver libc comme il est dans /lib et que la commande de link spécifie -L/usr/lib , modifiez l'option -L en -L/lib ou ajoutez l'option -L/lib à la commande de link existante.

Si vous obtenez l'erreur suivante de DBD-mysql , vous utilisez probablement gcc (ou un vieux binaire compilé avec gcc ) :


/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'
Ajoutez -L/usr/lib/gcc-lib/... -lgcc à la commande de liaison lorsque la bibliothèque mysql.so est construite (vérifiez l'affichage de make concernant mysql.so quand vous compilez le client Perl). L'option -L doit spécifier le chemin vers le dossier où se situe libgcc.a sur votre système.

Une autre cause du problème peut être que Perl et MySQL ne sont pas tous deux compilés avec gcc . Dans ce cas là, vous devrez faire en sorte qu'ils le soient.

Si vous obtenez les erreurs suivantes de la part de Msql-Mysql-modules quand vous exécutez ces 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.
cela signifie que vous avez besoin d'inclure la bibliothèque dynamique, -lz, dans la ligne de liaison. Cela peut se faire en changeant ce qui suit dans lib/DBD/mysql/Install.pm :

$sysliblist .= " -lm";
en

$sysliblist .= " -lm -lz";
Après cela, vous devez exécuter 'make realclean' et reprendre l'installation dès le début.Si vous voulez installer DBI sur SCO, vous devez éditer le fichier Makefile de DBI-xxx et chaque sous-dossier.

Notez que gcc doit être en version 2.95.2 ou plus récente :


ANCIEN:                               NOUVEAU:
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
Ceci est dû au fait que le chargeur dynamique de Perl ne va pas charger les modules DBI , s'ils sont compilés avec icc ou cc .

Si vous voulez utiliser le module de Perl sur un système qui ne supporte pas les liaisons dynamiques (comme Caldera/SCO) vous pouvez générer une version statique de Perl incluant DBI et DBD-mysql . L'approche est de générer une version de Perl avec le code de DBI lié et de l'installer au dessus de votre Perl courant. Puis vous utilisez cette version pour en créer à nouveau une autre qui comporte le code de DBD lié et d'installer cette version ci.

Sur Caldera (SCO), vous devez définir les variables d'environnement suivantes :

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
ou :

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:
D'abord, créez un Perl incluant un DBI lié statiquement en exécutant des commandes dans le dossier où se situe votre distribution DBI :

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl
Ensuite, vous devez installer le nouveau Perl. Les affichages de make perl vous indiqueront les commandes make exactes que vous aurez besoin d'exécuter pour faire l'installation. Sur Caldera (SCO), il s'agit de make -f Makefile.aperl inst_perl MAP_TARGET=perl .Puis, utilisé le Perl qui vient d'être créé pour en créer un nouveau qui inclut un DBD::mysql lié statiquement en exécutant ces commandes dans le dossier où votre distribution de Msql-Mysql-modules se situe :

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl
Finalement, vous devez installer ce nouveau Perl. Une fois de plus, l'affichage de make perl vous indiquera la commande à utiliser.

<< Problèmes lors de l'utilisation des interfaces Perl DBI et DBD >>
Installer ActiveState Perl sur Windows Commentaires sur l'installation de Perl Installer MySQL