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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.