Si vous liez votre programme et que vous obtenez des erreurs
pour des symboles non-référencés qui commencent par
mysql_
, comme ce qui suit :
/tmp/ccFKsdPa.o: In function `main': /tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init' /tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x57): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error' /tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'
vous pouvez réparer cela en ajoutant
-Ldir_path-lmysqlclient
dans votre ligne de
liaison. Pour déterminer le dossier correct, utilisez cette
commande :
shell> mysql_config --libs
Si vous obtenez une erreur undefined
reference
pour la fonction
uncompress
ou compress
,
ajoutez -lz
à la fin de votre ligne de
liaison et essayez à nouveau !
Si vous obtenez des erreurs undefined
reference
pour des fonctions qui devraient exister sur
votre système, comme connect
, vérifiez la
page de manuel de la fonction en question, pour les
bibliothèques que vous devez ajouter à la ligne de liaison !
Si vous obtenez une erreur undefined
reference
pour des fonctions inexistantes sur votre
système, ressemblant à ce qui suit :
mf_format.o(.text+0x201): undefined reference to `__lxstat'
cela signifie que votre bibliothèque est compilé sur un système qui n'est pas à 100% compatible avec le votre. Dans ce cas, vous devez obtenir la dernière distribution des sources de MySQL et compiler vous-mêmes. See Section 2.4, « Installation de MySQL avec une distribution source ».
Si vous essayez de faire fonctionner un programme et que vous
obtenez des erreurs pour des symboles non-référencés qui
commencent par mysql_
ou une erreur disant
que la bibliothèque mysqlclient
ne peut
être trouvée, cela signifie que votre système n'arrive pas à
trouver la bibliothèque partagée
libmysqlclient.so
.
La solution est de dire à votre système de chercher les bibliothèques partagées là où la bibliothèque est située avec l'une des méthodes suivantes :
Ajouter le chemin vers le dossier où se situe
libmysqlclient.so
dans la variable
d'environnement LD_LIBRARY_PATH
.
Ajouter le chemin vers le dossier où se situe
libmysqlclient.so
dans la variable
d'environnement LD_LIBRARY
.
Copiez le fichier libmysqlclient.so
à
un endroit où votre système le cherche, comme dans le
dossier /lib
, et mettez à jour les
informations de la bibliothèque partagée en exécutant
ldconfig
.
Un autre moyen de résoudre ce problème est de lier votre
programme statiquement, avec -static
, ou en
effa¸ant les bibliothèques dynamiques de MySQL avant de lier
votre code. Dans le second cas vous devez vous assurer qu'aucun
autre programme n'utilise les bibliothèques dynamiques !
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.